Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格

Arduino: for/while/if before void setup() or void loop()? -- error: expected unqualified-id before

本文关键字:void 错误 不合格 loop setup if for Arduino while 之前      更新时间:2023-10-16

为什么这不起作用?

for(int i=0; i<5;i++){ 
// Do stuff
}
void setup() {
// put your setup code here, to run once:

}
void loop() {
// put your main code here, to run repeatedly:
}

在我的具体情况下,我想用参数化构造函数初始化对象数组,如下所示:https://www.geeksforgeeks.org/how-to-initialize-array-of-objects-with-parameterized-constructors-in-c/

我剪下的代码是:

MoistSensor* moistsensors = (MoistSensor*)malloc(sizeof(MoistSensor) * cfg.NumberOfMoistsensors);
for(int it=0; it < cfg.NumberOfMoistsensors; it++) {
moistsensors[it] = MoistSensor(cfg.sensorPins[it], cfg.OnPWM, cfg.OffPWM, cfg.analogInPin);
}

MoistsensorClass是我想要生成的对象,cfg是保存配置数据的对象。

您想要将初始化代码移动到setup函数中,如下所示:

MoistSensor* moistsensors = nullptr;
void setup() {
moistsensors = (MoistSensor*)malloc(sizeof(MoistSensor) * cfg.NumberOfMoistsensors);
for(int it=0; it < cfg.NumberOfMoistsensors; it++) {
moistsensors[it] = MoistSensor(cfg.sensorPins[it], cfg.OnPWM, cfg.OffPWM, cfg.analogInPin);
}
}
void loop() {
// put your main code here, to run repeatedly:
}
需要执行的代码必须用某种函数编写。在C/C++中,它是main()函数。

任何函数之外的东西只能是declarationsfunctionspreprocessor directives等;但不是可执行代码。

在Arduino IDE中,执行的代码由两个函数编写:

void setup()void loop()

void setup()中的代码在程序执行期间只执行一次。

void loop()中的代码等效于while(true)循环中写入的代码

因此,除了initialization of variablesfunction definitionsfunction declarations和其他一些东西之外,所有其他类似for循环的东西都必须写入其中一个函数中

相关文章: