arduino的C ++是否遵循标准?

问题描述

Arduino平台上的

C ++程序没有其他平台上的main()功能;相反,它必须具有两个名为setup()loop()的函数。但是根据C ++标准-所有C ++程序都必须具有main()函数。

那么,这样的C ++代码符合标准吗? Arduino上的C ++编译器/链接器/加载器是否符合标准?

解决方法

C ++标准提供了两种执行环境:独立式和托管式。这里的大多数人都在托管环境中运行,在该环境中您的程序从main()开始。嵌入式系统在独立的环境中运行,在该环境中,程序是通过实现定义的机制启动的。独立环境的编译器可以省略标准库的某些部分。有关更多详细信息,请see here

因此,setup()loop()在独立的环境中还可以。不需要main()。我不知道Arduino的库是否符合标准中的要求。

在托管环境中,通常有一个操作系统(主机)可让您启动程序。用于这种环境的C ++程序必须具有main()。在独立的环境中,程序通常在打开设备电源时启动。它更接近金属,并且允许系统有其自己的要求,以便简化触发应用程序的样板代码。

,

只是在这里大声说了一下:那里是一个main.cpp,它看起来像这样:

#include <Arduino.h>

int main(void) {
  init();
  setup();
  for (;;) {
    loop();
  }
  return 0;
}

Arduino IDE提供了它。如果还没有函数原型,它还会生成函数原型,并执行其他一些操作。

因此,在Arduino IDE的可见代码中没有main()并不表示它不存在,或不符合标准。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...