Grbl源码解析与移植-主入口

编译上传,便遇大山。初探入口,仿佛若有戏。便舍身,从口入,精读数十行,豁然开朗。

        初读Grbl,你可能也被它的简洁吓到了,它没用setup,也没用loop,甚至连main也没有,只有一行代码#include "grbl.h"! 说好的Arduino呢?丫的不按套路出牌呀!

没办法,硬着头皮看grbl.h,仍然一无所获,入口到底在哪?在哪?在哪?Grbl难道有什么黑科技?

        浏览这个库的文件组织结构,意外地发现有一个main.c文件,难道是它?是它是它就是它!把它删掉,Arduino编译器果然报错,编译不通过,提示没有定义setup和loop。

        原来main.c里面定义了main函数,有了这个main函数,Arduino编译器不在提供包装的setup和loop,而是用这个main函数做入口。为了验证这个想法,把main.c文件删除,

        在arduino的入口文件里定义main函数,果然不报错了。通过查阅资料发现,arduino的编译器会把setup和loop函数包装成类似如下形式的main函数:

int main()

{

setup();

for ( ;; ) {

loop();

}

}

至于为什么不使用setup和loop而非要使用main呢?且听下回分解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。