在C ++中是否可以这样(在Arduino上)?
#include "stdio.h"
String str = "foo";
int i[strLength()]; // <- define length of array in function
int strLength() {
return str.length();
}
int main(void) {
...
}
提前谢谢!
答案 0 :(得分:3)
如果您使用的是c ++,正确的解决方案是std :: vector。 您需要查看std :: vector的文档,但这里是您的代码转换为std :: vector。
然后使用std :: vectors,就像使用常规数组一样,使用“[]”运算符。
#include <cstdio>
#include <vector>
String str = "foo";
int strLength() { // Needs to come before the use of the function
return str.length();
}
std::vector<int> i(strLength() ); //Start at strLength
int main(void) {
...
}
答案 1 :(得分:2)
没有。您需要i
作为指针并在main
中分配数组:
int *i = NULL;
// etc.
int main(void) {
i = (int*) malloc(sizeof(*i)*strLength());
// etc.
}
答案 2 :(得分:1)
我知道这不是你所希望的,但我会做一些像这样不优雅的事情:
String str = "foo";
#define MAX_POSSIBLE_LENGTH_OF_STR 16
...
int i[MAX_POSSIBLE_LENGTH_OF_STR];
这个想法是你为数组分配的空间比实际需要的多,而且只是避免使用数组的额外部分。
或者,如果您不打算经常更改源代码中str
的定义,可以通过这样做来节省一些RAM:
String str = "foo";
#define LENGTH_OF_STR 3
...
int i[LENGTH_OF_STR];