_MSC_VER
и, возможно, _MSC_FULL_VER
это то, что вам нужно. Вы также можете проверить visualc.hpp в любой недавней установке для некоторых примеров использования.
Некоторые значения для более поздних версий компилятора:
MSVC++ 14.24 _MSC_VER == 1924 (Visual Studio 2019 version 16.4)
MSVC++ 14.23 _MSC_VER == 1923 (Visual Studio 2019 version 16.3)
MSVC++ 14.22 _MSC_VER == 1922 (Visual Studio 2019 version 16.2)
MSVC++ 14.21 _MSC_VER == 1921 (Visual Studio 2019 version 16.1)
MSVC++ 14.2 _MSC_VER == 1920 (Visual Studio 2019 version 16.0)
MSVC++ 14.16 _MSC_VER == 1916 (Visual Studio 2017 version 15.9)
MSVC++ 14.15 _MSC_VER == 1915 (Visual Studio 2017 version 15.8)
MSVC++ 14.14 _MSC_VER == 1914 (Visual Studio 2017 version 15.7)
MSVC++ 14.13 _MSC_VER == 1913 (Visual Studio 2017 version 15.6)
MSVC++ 14.12 _MSC_VER == 1912 (Visual Studio 2017 version 15.5)
MSVC++ 14.11 _MSC_VER == 1911 (Visual Studio 2017 version 15.3)
MSVC++ 14.1 _MSC_VER == 1910 (Visual Studio 2017 version 15.0)
MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015 version 14.0)
MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013 version 12.0)
MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012 version 11.0)
MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010 version 10.0)
MSVC++ 9.0 _MSC_FULL_VER == 150030729 (Visual Studio 2008, SP1)
MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008 version 9.0)
MSVC++ 8.0 _MSC_VER == 1400 (Visual Studio 2005 version 8.0)
MSVC++ 7.1 _MSC_VER == 1310 (Visual Studio .NET 2003 version 7.1)
MSVC++ 7.0 _MSC_VER == 1300 (Visual Studio .NET 2002 version 7.0)
MSVC++ 6.0 _MSC_VER == 1200 (Visual Studio 6.0 version 6.0)
MSVC++ 5.0 _MSC_VER == 1100 (Visual Studio 97 version 5.0)
Номер версии выше, конечно, относится к основной версии вашей Visual Studio, которую вы видите в поле about, а не к году в названии. Подробный список можно найти здесь . Начиная с недавнего времени , Visual Studio начнет монотонно обновлять свои диапазоны, то есть вы должны проверять диапазоны, а не точные значения компилятора.
cl.exe /?
даст подсказку об используемой версии, например:
c:\program files (x86)\microsoft visual studio 11.0\vc\bin>cl /?
Microsoft (R) C/C++ Optimizing Compiler Version 17.00.50727.1 for x86
.....
#if defined _MSC_VER # if _MSC_VER >= 1800 # include <inttypes.h>
. inttypes.h не может быть найден, хотя. Очень странно_MSC_VER
. Надеюсь, это поможетДа, _MSC_VER - это макрос, который даст вам версию компилятора. Последнее число выпусков Visual C ++ было в форме
<compiler-major-version>.00.<build-number>
, где 00 - младший номер. Так_MSC_VER
что оценим<major-version><minor-version>
.Вы можете использовать код как это:
Похоже, что обновления между последовательными выпусками компилятора не были изменены
compiler-minor-version
, поэтому следующий код не требуется:Доступ к более подробной информации о версии (например, компилятор номер сборки) можно найти , используя другие переменные встроенный препроцессор здесь .
источник
_MSC_VER_ == 1500
, однако, если MS действительно изменила_MSC_VER
обновления с помощью компилятора, пакеты обновления и т. Д. (Я не думаю, что они когда-либо имели), тогда== 1500
проверка может прерваться. Вот почему я так закодировал._MSC_VER должен быть определен для определенного номера версии. Вы можете либо использовать #ifdef, либо использовать фактическое определение и выполнить тест во время выполнения. (Если по какой-то причине вы хотели запустить другой код в зависимости от того, с каким компилятором он был скомпилирован? Да, возможно, вы искали #ifdef. :))
источник
С помощью
_MSC_VER
макроса.источник
В качестве более общего ответа http://sourceforge.net/p/predef/wiki/Home/ содержит список макросов для обнаружения конкретных компиляторов, операционных систем, архитектур, стандартов и многого другого.
источник
Это немного старый, но вы должны начать:
источник
_MSC_VER
не требует от вас включенияstdio.h
, что легко проверяетсяecho int i = _MSC_VER; > tmp.c
cl /nologo /c tmp.c
В визуальной студии иди, чтобы помочь | о и посмотрите на версию Visual Studio, которую вы используете для компиляции вашего приложения.
источник