如何在Arduino上的函数中定义全局数组的长度?
在 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) {
...
}
先感谢您!
Is something like this possible in C++ (on Arduino)?
#include "stdio.h"
String str = "foo";
int i[strLength()]; // <- define length of array in function
int strLength() {
return str.length();
}
int main(void) {
...
}
Thank you in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您使用 C++,正确的解决方案是 std::vector。
您需要查看 std::vector 的文档,但这里是将您的代码转换为 std::vector 的。
然后,您可以像使用常规数组一样使用 std::vectors,并使用“[]”运算符。
If you are using c++, the correct solution is a std::vector.
You will need to look at the docs for std::vector, but here is a conversion of your code to std::vector.
You then use std::vectors the same way you use regular arrays, with the "[]" operator.
不,您需要将
i
用作指针并在main
中分配数组:No. You would need
i
to be a pointer and allocate the array in yourmain
:我知道这不是您所希望的,但我只会做一些不优雅的事情,如下所示:
这个想法是为数组分配比实际需要更多的空间,并且避免使用数组的额外部分。
或者,如果您不打算经常更改源代码中
str
的定义,则可以通过执行以下操作来节省一些 RAM:I know it's not what you were hoping for, but I would just do something inelegant like this:
The idea is that you allocate more space for the array than you actually need, and just avoid using the extra parts of the array.
Alternatively, if you aren't going to be changing the definition of
str
in your source code very often, you could save some RAM by doing this: