在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) {
   ...
}

先感谢您!

===============>>#1 票数: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) {
   ...
}

===============>>#2 票数:2 已采纳

不。你需要i成为一个指针,并在你的main分配数组:

int *i = NULL;

// etc.

int main(void) {

    i = (int*) malloc(sizeof(*i)*strLength());

    // etc.
}

===============>>#3 票数: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];

  ask by speendo translate from so

未解决问题?本站智能推荐: