C ++中的编译器版本,名称和OS检测

时间:2011-01-18 13:59:42

标签: c++ compiler-construction

我需要使用C ++检测操作系统名称,编译器名称和编译器版本,因为我需要更改每种情况的设置。

我该怎么做?

4 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

我建议通过提供 -D_i386 -DENDIAN = 1234 -D_linux 在构建脚本中定义平台。但如果您仍然认为另一个 predef 项目是您的朋友:

http://sourceforge.net/apps/mediawiki/predef/index.php?title=Main_Page

答案 2 :(得分:1)

您将无法在编译时检测到操作系统。但是,您将能够确定编译器 - 几乎所有编译器都定义了指示其存在的宏,如__GNUC__或类似GCC和MSVC具有__MSC_VER__或类似的东西。你必须检查他们的文档中的实际宏名称,我已经忘记了。

编辑:为了澄清,您可以检查包含哪些系统的标头。例如,Windows标头定义了许多宏,如WINNT_VER,它们提供了最低版本的Windows。但是你无法检测编译器执行的操作系统。

答案 3 :(得分:1)

通常将该任务留给构建环境。如果你可以假设一个posixy设置,或者使用任何其他被认为合适的方法,可以使用像uname这样的命令。