在嵌入式编程中,一般为开源的Linux操作系统,我们直接编写Linux程序,调用Linux系统应用,并在主机上做交叉编译即可。不过,对于上位机软件,有时候也需要我们自己来编写,比如数据格式转换小工具软件。
最近我就有一个小项目。项目是运行在Cortex-M3内核的MCU上,我需要将原始的CSV文件的数据转换为binary格式的文件,以便我在MCU中引脚数据。但问题来了,CSV文件由多个项目组提供,部分人员的系统仅支持Linux,所以,我的工具软件也需要兼容Linux系统。
同一个任务编写两套软件,建立两个工程,似乎也不合适。让编译器自己选择对应的操作系统才量终极方案。下面,我就将我在网络上查阅到,并验证的解决方案分享。
通过预定义的方式来实现:
_WIN32在此预定义下的代码将在windows操作系统下运行;
__LINUX__在此预定义下的代码将在Linux操作系统下运行;
_WIN32:Windows __linux__:Linux __APPLE__:苹果OS X 或 iOS __FreeBSD__:FreeBSD __NetBSD__:NetBSD __OpenBSD__:OpenBSD
#ifdef _WIN32 #include "win/internal.h" #include "win/handle-inl.h" #define uv__make_close_pending(h) uv_want_endgame((h)->loop, (h)) #else #include "unix/internal.h" #endif