我正在尝试将 struct 与 Arduino 一起使用,我是初学者,我不知道如何在 struct 中声明一个数组并使用它(int pin[5]
和int vecinos[6]
)。
typedef struct
{
int id;
int pin[5];
int tiempoCero;
int tiempoApagado;
int estado;
int vecinos[6];
} zonas;
zonas zona[5];
你的声明没问题。但是您需要了解 Arduino IDE 会自动为您生成函数原型。不幸的是,IDE 做得很差。它在声明之前将生成的原型排序到顶部。因此,您不能在任何函数定义中使用它们。除非您阻止 IDE 自动生成原型。
我找到了三种方法来实现这一点:
对于小文件,我首选的解决方案是#1。你的草图将是
namespace whatever {
typedef struct
{
int id;
int pin[5];
int tiempoCero;
int tiempoApagado;
int estado;
int vecinos[6];
} zonas;
function example(zonas z) {
...
}
}
void setup() {
...
}
void loop() {
whatever::zonas z;
...
whatever::example(z);
}
对于一个广泛的例子看这里。
我建议避免直接在 .ino 文件中进行编码,除非它真的是几行。对于其他任何事情,只需创建单独的 .h 和 .c/.cpp 文件。这也将允许通过在 PC 上编译和运行来测试所有/部分代码。
通常我有一个简单的 project.cpp 文件,我会在其中创建一个 project.ino 符号链接。然后在单独的 .cpp/.h 文件对中编写所有代码,包括从 setup() 和 loop() 调用的入口点。
你声明的方式很好。为了访问 pin 数组(对于 vecinos 也是如此):
for (int i = 0; i < 5; i++) {
zona[0].pin[i] = i;
}