Arduino IDE:数组绑定

Arduino IDE: array bound

我在 Arduino IDE 中收到以下代码的 数组绑定错误 。如果我将 "sample" 的计算结果(在本例中为 50)放入,则可以解决此问题,但这是一种虚拟解决方案。我希望软件为我自己做,而不是我做手工计算并插入它。解决方法是什么?谢谢!

int des_freq=200; 
int ncycles=5;
int sample =1000/(des_freq*T); 
float V_sin_bip[sample]; // error here

自版本 1.6.6 起,Arduino IDE 默认启用 C++11。但是 C++ 标准(直到 C++11)不支持可变大小的数组。 C++11 标准将数组大小作为常量表达式提及。

float V_sin_bip[sample]; 使用变量表达式来表示数组大小。因此,出现错误。

如果你想要一个 "variable-length array"(在 C++ 中最好称为 "dynamically sized array",因为不允许使用适当的可变长度数组),你要么必须自己动态分配内存:

int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!

或者,更好的是,使用标准容器:

int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>

如果你仍然想要一个合适的数组,你可以在创建它时使用常量,而不是变量:

const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)