Это и вопрос, и ссылка, и я надеюсь, что люди смогут опираться на это, чтобы его могли повторно использовать люди с похожими вопросами.
Как мы можем надежно обнаружить конкретную версию компилятора 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__
Но единственные значения, которые мне удалось найти через google (у документов 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)
Может ли кто-нибудь заполнить этот список или предоставить ссылки на полный список? И, возможно, мы можем предоставить информацию и для других компиляторов.