Как Обнаружить, если я Компилирую Код с конкретной версией Visual Studio?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
253
задан user1810087 10 September 2018 в 22:21
поделиться

5 ответов

_MSC_VER и возможно _MSC_FULL_VER то, в чем Вы нуждаетесь. Можно также исследовать visualc.hpp в любой недавней установке повышения для некоторых примеров использования.

Некоторые значения для более свежих версий компилятора:

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, которую Вы видите в о поле, не к году на имя. Полный список может быть найден здесь . Запуск недавно , 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
.....
506
ответ дан 20 revs, 15 users 30% 23 November 2019 в 02:49
поделиться

_MSC_VER должен быть определен к определенному номеру версии. Вы можете или #ifdef на нем, или можно использовать фактическое, определяют и делают тест во время выполнения. (Если по некоторым причинам Вы хотели выполнить различный код на основе того, с каким компилятором он был скомпилирован? Да, вероятно, Вы искали #ifdef.:))

11
ответ дан DJ Capelis 23 November 2019 в 02:49
поделиться

При помощи _MSC_VER макрос.

6
ответ дан Jeff Hubbard 23 November 2019 в 02:49
поделиться

Это немного старо, но должно запустить Вас:

//******************************************************************************
// Automated platform detection
//******************************************************************************

// _WIN32 is used by
// Visual C++
#ifdef _WIN32
#define __NT__
#endif

// Define __MAC__ platform indicator
#ifdef macintosh
#define __MAC__
#endif

// Define __OSX__ platform indicator
#ifdef __APPLE__
#define __OSX__
#endif

// Define __WIN16__ platform indicator 
#ifdef _Windows_
#ifndef __NT__
#define __WIN16__
#endif
#endif

// Define Windows CE platform indicator
#ifdef WIN32_PLATFORM_HPCPRO
#define __WINCE__
#endif

#if (_WIN32_WCE == 300) // for Pocket PC
#define __POCKETPC__
#define __WINCE__
//#if (_WIN32_WCE == 211) // for Palm-size PC 2.11 (Wyvern)
//#if (_WIN32_WCE == 201) // for Palm-size PC 2.01 (Gryphon)  
//#ifdef WIN32_PLATFORM_HPC2000 // for H/PC 2000 (Galileo)
#endif
1
ответ дан Steve Fallows 23 November 2019 в 02:49
поделиться

В Visual Studio перейдите к справке | об и посмотрите на версию Visual Studio, которую Вы используете для компиляции приложения.

-12
ответ дан Haacked 23 November 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: