这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » [学习笔记]让编译器选择当前的操作系统环境

共2条 1/1 1 跳转至

[学习笔记]让编译器选择当前的操作系统环境

院士
2024-02-26 16:13:01     打赏

在嵌入式编程中,一般为开源的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

我查看了Libuv开源软件,看到人家只是区别了Windows系统和非Windows系统,看上去也挺方便的。供大家参考了!

#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





关键词: 编译器     操作系统     预定义    

高工
2024-02-27 09:17:38     打赏
2楼

话说,楼主您没有贴出来您的测试源代码


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]