如何编写宏使跨平台编译更容易? [复制]

Posted

技术标签:

【中文标题】如何编写宏使跨平台编译更容易? [复制]【英文标题】:How to write a macro to make cross-platform compile easier? [duplicate] 【发布时间】:2018-10-24 07:31:54 【问题描述】:

我正在编写一个C 程序,我的操作系统是MacOS。 我想知道如何添加一个宏以便在不同的操作系统下编译我的C程序,主要是WindowsLinux

非常感谢您为我提供关于这个问题的想法。

【问题讨论】:

宏应该做什么? 这在很大程度上取决于您的程序所依赖的系统相关的东西。 为什么不根据你的目标在你的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 */    

【讨论】:

以上是关于如何编写宏使跨平台编译更容易? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何测试编译器不应接受的内容[重复]

如何在java中编写T.class? [复制]

如何在ASP.NET Core中编写高效的控制器

如何编写更高层次嵌入式C代码?

如何在 C++ 中编写带有字符串的 switch 语句? [复制]

如何编写Dll(用命令行编译加深理解)