【发布时间】:2011-06-04 02:23:22
【问题描述】:
我正在编写一个跨平台代码,它应该在 linux、windows、Mac OS 上编译。在windows上,我必须支持visual studio和mingw。
有一些特定于平台的代码,我应该将它们放在#ifdef .. #endif 环境中。比如这里我放了win32的具体代码:
#ifdef WIN32
#include <windows.h>
#endif
但是我如何识别 linux 和 mac OS?我应该使用什么定义名称(或等)?
【问题讨论】:
-
骗子有一个更好接受的答案。
-
建议的副本不是同一个问题。这个问题只问识别操作系统,而这个问题也问识别编译器,这是一个非常不同的事情。
-
@JBentley 但接受的答案甚至没有提到编译器,只谈论操作系统(和一个“平台”)。更不用说相对于受骗者提供的内容而言,这是一个糟糕的答案。
-
@rubenvb 然后将另一个问题链接为评论。仅仅因为它有一个更好的答案,并不会使其重复。问题是什么决定了它是否是重复的,而不是答案。关闭这个只能确保我们永远不会得到与编译器相关的问题的高质量答案,所谓的“重复”永远无法回答。
标签: c++ macros cross-platform c-preprocessor