【发布时间】:2011-04-05 07:15:13
【问题描述】:
这既是一个问题,也是一个参考,我希望人们可以以此为基础,以便有类似问题的人可以重复使用它。
我们如何可靠地检测特定版本的 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)
任何人都可以填写此列表或提供完整列表的链接吗?也许我们也可以为其他编译器提供信息。
【问题讨论】:
-
Visual Studio 和 Xcode 都不是编译器 - 你不应该关心它们的版本。
-
@mathepic 我和旁边的人一样迂腐,但真的吗? VS 为 IDE 的每个版本都提供了特定版本的前端编译器,并通过 _MSC_VER 公开该版本;这就是他想要的
-
那么让我说清楚。是的,它们都是 IDE,但它们都使用自己的编译器打包,这就是我所说的。我希望从我的信息中可以清楚地看到这一点。
-
也许你应该让语言变得明显,并根据 C++ 编译器而不是 IDE 来讨论。 VS 附带了几个编译器(C++、VB.NET、C#、F#,也许还有其他)。我相信 XCode(C++、Objective-C,也许还有其他)也是如此。
-
这个网站上的人太迂腐了 :) 我编辑了原始问题,说 Xcode 编译器。你们还需要什么?我假设人们有一点点智力,并认识到这些定义是关于什么的。如果人们知道 APPLE_CC 并进行谷歌搜索并提出此页面并找到他们正在寻找的号码,那就太好了!但是您对 LLVM 有一个很好的看法。用 Xcode 打包的 LLVM 是否有不同的 APPLE_CC 值?
标签: visual-studio xcode compiler-construction