这既是一个问题,也是一个参考,我希望人们能够在此基础上进行构建,以便有类似问题的人可以重用它。
我们如何可靠地检测 C/C++/ObjC 编译器的特定版本?现在我知道了 Visual Studio 的答案,并部分知道了 Xcode 的答案。
现在,对于 Visual Studio 编译器,我们有 _MSC_VER,它是使用以下值定义的:
Version 1.0 800
Version 2.0 900
Version 2.x 900
Version 4.0 1000
Version 5.0 1100
Version 6.0 1200
Version 7.0 1300
Version 7.1 1310
Version 8.0 1400 (Visual Studio 2005)
Version 9.0 1500 (Visual Studio 2008)
Version 10.0 1600 (Visual Studio 2010)
Version 11.0 1700 (Visual Studio 2012)
现在对于 Xcode 编译器我们有这样的定义:
__APPLE_CC__
但我通过谷歌找到的唯一值(Mac文档似乎没有这些值)是:
Xcode 3.0 5465
Xcode 3.1 5470
Xcode 3.1 (GCC 4.2) 5553
Xcode 3.2.3 5664 (Got this value from my own compiler)
任何人都可以完成此列表或提供完整列表的链接吗?也许我们也可以为其他编译器提供信息。
作为一个移植了超过他应有份额的“C”的人,我知道你来自哪里,所以这里有一些可以帮助我们开始:
对于 IBM CL/C++ 编译器产品:
__xlc__ - Format is V.R.M.F eg: "9.0.0.0"
__IBMCPP__ Format is an integer as VRM eg: V9.0 is 900
__IBMC__ - Format is an integer as VRM,
which indicates the level of compiler as VRM as:
< 200 is C Set/2
< 300 is C Set++
otherwise is Visual Age C++ V.M.C
where V=version, M=release, M=modification and F=fix level.
对于 Borland C:
___BORLANDC__ ??
For GNU C https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html:
__GNUC__ ??
对于沃特康 C:
__WATCOMC__
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)