如何编写宏使跨平台编译更容易? [复制]
Posted
技术标签:
【中文标题】如何编写宏使跨平台编译更容易? [复制]【英文标题】:How to write a macro to make cross-platform compile easier? [duplicate] 【发布时间】:2018-10-24 07:31:54 【问题描述】:我正在编写一个C
程序,我的操作系统是MacOS
。
我想知道如何添加一个宏以便在不同的操作系统下编译我的C
程序,主要是Windows
和Linux
?
非常感谢您为我提供关于这个问题的想法。
【问题讨论】:
宏应该做什么? 这在很大程度上取决于您的程序所依赖的系统相关的东西。 为什么不根据你的目标在你的makefile中创建不同的块呢?将目标作为附加信息传递,在本主题中很好地解释了:***.com/questions/2826029/… 和不同的目标:***.com/questions/13919505/… 我不会使用宏,而是使用操作系统抽象层。那么编译的时候就很容易在MacOS、WindowsOs和LinuxOS之间切换了。 正如@4386427 所说 - 你应该设计 是可移植的。分离出可移植和不可移植的代码。将依赖于操作系统的代码放入一组单独的函数中并编译成 DLL/.so 文件。最初需要更多的工作,但从长远来看可以节省大量精力。 【参考方案1】:你可以这样做:-
#if defined(_WIN32)
#define OS_NAME "windows"
/* add your windows specific codes here */
#elif defined(__linux__)
#define OS_NAME "linux"
/* add your Linux specific codes here */
#elif defined(__APPLE__) && defined(__MACH__)
#define OS_NAME "MacOS"
/* add your Mac specific codes here */
【讨论】:
以上是关于如何编写宏使跨平台编译更容易? [复制]的主要内容,如果未能解决你的问题,请参考以下文章