Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ArduinoIDE中编译? 我注意到下面的代码,显然是无效的C++,在ARDUNO IDE中编译(使用AVR GCC): //即使在下列情况下,程序也会编译 //行已注释。 //void函数(); 无效设置(){ //将安装代码放在此处,以便运行一次: someRandomFunction(); } void循环(){ //将主代码放在此处,以便重复运行: } void函数(){ }_C++_Arduino_Avr Gcc - Fatal编程技术网

如何在ArduinoIDE中编译? 我注意到下面的代码,显然是无效的C++,在ARDUNO IDE中编译(使用AVR GCC): //即使在下列情况下,程序也会编译 //行已注释。 //void函数(); 无效设置(){ //将安装代码放在此处,以便运行一次: someRandomFunction(); } void循环(){ //将主代码放在此处,以便重复运行: } void函数(){ }

如何在ArduinoIDE中编译? 我注意到下面的代码,显然是无效的C++,在ARDUNO IDE中编译(使用AVR GCC): //即使在下列情况下,程序也会编译 //行已注释。 //void函数(); 无效设置(){ //将安装代码放在此处,以便运行一次: someRandomFunction(); } void循环(){ //将主代码放在此处,以便重复运行: } void函数(){ },c++,arduino,avr-gcc,C++,Arduino,Avr Gcc,这是怎么回事?C++需要在使用函数之前声明它们。当编译器在代码> > SoMeNoMoType()/ SETUP()/Cux>函数中,它是如何知道它将被声明的? < P>这就是我们所说的向前声明,C++中只需要在尝试使用函数之前声明函数的原型,而不是定义整个函数。 以以下两段代码为例: 代码A: #include <Arduino.h> void setup(){} void AA(){ // any code here } void loop(){ AA(); } #i

这是怎么回事?C++需要在使用函数之前声明它们。当编译器在代码> > SoMeNoMoType()/<代码> <代码> SETUP()/Cux>函数中,它是如何知道它将被声明的?

< P>这就是我们所说的向前声明,C++中只需要在尝试使用函数之前声明函数的原型,而不是定义整个函数。 以以下两段代码为例:

代码A:

#include <Arduino.h>
void setup(){}
void AA(){
  // any code here
}
void loop(){
  AA();
}
#include <Arduino.h>
void setup(){}
void loop(){
  BB();
}
void BB(){
  // any code here
}
#包括
void setup(){}
无效AA(){
//这里有代码吗
}
void循环(){
AA();
}
代码B:

#include <Arduino.h>
void setup(){}
void AA(){
  // any code here
}
void loop(){
  AA();
}
#include <Arduino.h>
void setup(){}
void loop(){
  BB();
}
void BB(){
  // any code here
}
#包括
void setup(){}
void循环(){
BB();
}
void BB(){
//这里有代码吗
}
严格来说,C要求函数被前向声明,以便编译器编译和链接它们。因此,在代码A中,我们没有声明函数,但定义了它,这使得正确的C代码合法。但是代码B在循环之后有函数定义,这对于普通C是非法的。解决方案如下:

#include <Arduino.h>

void BB();

void setup(){}
void loop(){
  BB();
}
void BB(){
  // any code here
}
#包括
void BB();
void setup(){}
void循环(){
BB();
}
void BB(){
//这里有代码吗
}

然而,为了适应Arduino脚本格式,即在void loop()之后有一个void setup(),需要Arduino在其IDE中包含一个脚本,该脚本自动查找函数并在顶部为您生成原型,这样您就不必担心了。因此,尽管用C++编写,但在其草图中,您不会看到ARDIIO草图使用前向声明,因为它的效果很好,而且通常容易读到第一个设置()和循环()。伊诺语是“阿杜伊诺语”


主IO文件,带有附加的IO文件到C++源,然后只处理为C++(预处理器,编译)。可能是编译为C代码?ARDIONI+ C++更多的是C++的方言,然后实际是“C++”。尽管如此。您使用的是哪个版本?什么编译器选项?要添加到@AdrianMole的注释中,该程序所在的文件名是什么?ARDUINO“草图”和许多图书馆基本上是一个臃肿的、被愚弄的C++变体,只适用于不学习阅读和学习的修修补补者和学生,只喜欢复制和粘贴。如果您想为大多数嵌入式设备创建真正的软件,请放弃.INO并用汇编或C编写。避免动态分配。正如@Shuyna所暗示的,幕后有很多事情要做。您的

*ino
文件将得到预处理,函数声明将自动为您创建。这就是为什么我们不必在使用前声明函数。它还调用标准的
avr gcc
来编译程序、链接库并创建十六进制文件以供上传。只需单击一下即可完成所有操作。在“首选项”中,在编译过程中打开详细输出,您将看到一切正在进行。有些人对此深恶痛绝;对我来说,这是一个完成事情的简单工具。(自1981年起写C)。