消失的Main函数

来自Duinopeak_COM
跳转至: 导航搜索

[English]


在入门例程里面有提到,hello world通常是我们认识的第一个程序。还记得c语言的hello world吗?

// hello world
#include <stdio.h>

int main()
{
    printf("hello world!\n");
    return 1;
} 

有没有发现,Arduino的程序里面没有了我们熟悉的main函数,取而代之的是setup和loop两个莫名其妙的东西。这一定程度上对一些初学者造成一些困惑,谁偷走了我的main函数? 其实,Arduino是有main函数的,位置在\arduino-1.0.5\hardware\arduino\cores\arduino\main.cpp ,以下是它的内容:

#include <Arduino.h>

int main(void)
{
    init();
#if defined(USBCON)
    USBDevice.attach();
#endif
    setup();
    for (;;) {
        loop();
        if (serialEventRun) serialEventRun();
    }
    return 0;
}

有种豁然开朗的感觉。可以看到,Arduino的程序确实是从main函数开始运行的,前面是一些初始化,然后执行setup函数,接着是个死循环,一直运行loop以及一个串口检测的函数。所以,现在你应该知道为什么你看不到main函数,为什么setup运行一次,loop循环运行了。