Loops 类将在循环()中初始化,但在设置()中不初始化
我在Arduino创建了一个类,并引入了该类。在以下情况下,代码可以正常编译和运行:Loops 类将在循环()中初始化,但在设置()中不初始化,loops,class,arduino,installation,instance,Loops,Class,Arduino,Installation,Instance,我在Arduino创建了一个类,并引入了该类。在以下情况下,代码可以正常编译和运行: #include <myclass.h> void setup(){ // Do some setup if needed } void loop(){ myclass newInstance; newInstance.setSomething(); newInstance.getSomething(); } #包括 无效设置(){ //如果需要,进行一些设置 } void循环(){ mycl
#include <myclass.h>
void setup(){
// Do some setup if needed
}
void loop(){
myclass newInstance;
newInstance.setSomething();
newInstance.getSomething();
}
#包括
无效设置(){
//如果需要,进行一些设置
}
void循环(){
myclass新实例;
newInstance.setSomething();
getSomething();
}
但在以下情况下不验证/编译:
#include <myclass.h>
void setup(){
myclass newInstance;
newInstance.setSomething();
}
void loop(){
newInstance.getSomething();
}
#包括
无效设置(){
myclass新实例;
newInstance.setSomething();
}
void循环(){
getSomething();
}
错误:“newInstance”未在此范围内声明
我见过一些人在设置和循环之外实例化(在include部分的正下方)。请解释创建实例然后在循环中使用它的最佳实践。我想在循环部分之外实例化,所以我不会在每个循环中创建实例。您应该在全局范围内声明对象。C++中的变量声明(和Arduinos语言基本上是C++)在中是有效的。 所以你的代码应该是
#include <myclass.h>
myclass newInstance;
void setup(){
newInstance.setSomething();
}
void loop(){
newInstance.getSomething();
}
#包括
myclass新实例;
无效设置(){
newInstance.setSomething();
}
void循环(){
getSomething();
}
您应该在全局范围内声明对象。C++中的变量声明(和Arduinos语言基本上是C++)在中是有效的。
所以你的代码应该是
#include <myclass.h>
myclass newInstance;
void setup(){
newInstance.setSomething();
}
void loop(){
newInstance.getSomething();
}
#包括
myclass新实例;
无效设置(){
newInstance.setSomething();
}
void循环(){
getSomething();
}
谢谢。我试过了,但是把“.setsomething”包含在了全球范围内。当我像您一样在全局中创建一个实例时,它就起作用了。这是正确答案。全局范围中的代码没有运行,只是定义了变量。您应该在函数中放置可执行代码。在Arduino中,所有启动都在预定义的函数设置和循环中启动,在其他环境中通常在函数main
中启动,谢谢。我试过了,但是把“.setsomething”包含在了全球范围内。当我像您一样在全局中创建一个实例时,它就起作用了。这是正确答案。全局范围中的代码没有运行,只是定义了变量。您应该在函数中放置可执行代码。在Arduino中,所有的启动都是在预定义的函数设置和循环,在其他环境中通常是在函数main
中,这是我不喜欢Arduino框架强制使用两个单独的“main”函数的原因之一,我看不到任何好处。。。它们是两个不同的作用域,无论你在其中声明什么,对另一个都不可见。这就是我不喜欢Arduino框架强制使用两个单独的“主”函数的原因之一,我看不到任何好处。。。它们是两个不同的作用域,无论您在其中声明什么,都不会对另一个可见。