ArduinoIDEにはmain関数は無いのか?

C言語の必須アイテムといわれているmain関数がArduinoIDEには出てきません。

ArduinoIDEではsetup関数とloop関数の二つの関数が新規ファイル起動直後に出てきますが、どこにもmain関数はありません。

では、main関数は必要としないのかというと実は有ります。

1)インストール場所

main.cppというファイル名でインストールされてます、ロケーションはかなり奥の方でした。

2)main関数の中味

下にソースコードを書き出してみました。(一部コメント文は抜いてあります)

main関数の中で、setup関数とloop関数が記述してあり、更にloop関数の方は無限ループの設定になってました。


#include <Arduino.h>

// Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (* /*func*/ )()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

void setupUSB() __attribute__((weak));
void setupUSB() { }

int main(void)
{
init();

initVariant();

#if defined(USBCON)
USBDevice.attach();
#endif

setup();

for (;;) {
loop();
if (serialEventRun) serialEventRun();
}

return 0;
}