본문 바로가기

Programming/C & C++

Visual Studio 버전 가져오기

C++ 로 개발을 하다보면 많이 사용하는 키워드, 기본 라이브러리( STL )이 있다.

 

요즘 나오는 Visual Studio 버전은 C++ 11 이상으로 지원하기 때문에 크게 상관이 없지만

C++ 11 미만의 버전에서는 대표적인 std::function 이나, 몇몇의 키워드들이 우리가 흔히 알고 있는 방식과는 다르게 작동하거나 아예 없는 경우가 있다.

(예를 들어 final 키워드 같은 경우..)

 

일반적인 경우, VS 버전을 바꿔가면서 개발을 하는 경우가 없지만, 지금의 나처럼 C++ 11을 지원하는 버전( VS 2012 이상의 버전 )과 지원하지 않는 버전 ( VS 2005 )을 오고가면서 코딩을 하고 있는 경우

또한, 빌드 단계에서 예기치 못한 충돌( 지금 나는 stdafx.h 충돌을 겪고 있다) 이 있을 경우에는 참 난감하다.

 

각설.

 

이럴 경우 미리 정의된 전처리기 매크로( predefined preprocessor macros ) 중에 _MSC_VER를 사용하면 된다.

#if _MSC_VER <= 원하는 VS 버전
	....
#else
	....
#endif

이런식으로 사용하면 된다.

 

#else 이후에 있는 #include "stdafx.h"는 잘못된 부분이다.

이렇게 사용하면 Visual Studio - E2924 PCH warning 를 만나게 된다.

 

 

밑의 표는 각 VS 버전별 _MSC_VER의 값이다

Visual Studio version _MSC_VER
Visual Studio 6.0 1200
Visual Studio .NET 2002 (7.0) 1300
Visual Studio .NET 2003 (7.1) 1310
Visual Studio 2005 (8.0) 1400
Visual Studio 2008 (9.0) 1500
Visual Studio 2010 (10.0) 1600
Visual Studio 2012 (11.0) 1700
Visual Studio 2013 (12.0) 1800
Visual Studio 2015 (14.0) 1900
Visual Studio 2017 RTW (15.0) 1910
Visual Studio 2017 version 15.3 1911
Visual Studio 2017 version 15.5 1912
Visual Studio 2017 version 15.6 1913
Visual Studio 2017 version 15.7 1914
Visual Studio 2017 version 15.8 1915
Visual Studio 2017 version 15.9 1916
Visual Studio 2019 RTW (16.0) 1920
Visual Studio 2019 version 16.1 1921
Visual Studio 2019 version 16.2 1922
Visual Studio 2019 version 16.3 1923

 

※ 출처

https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=vs-2019#microsoft-specific-predefined-macros

 

 

 

https://static-jsony.tistory.com/124

 

C++ __cplusplus 매크로와 _MSC_VER 매크로를 이용한 C++ 지원 버전 체크

기존에 포스팅했던 게시물의 업그레이드 버전 https://static-jsony.tistory.com/88 Visual Studio 버전 가져오기 C++ 로 개발을 하다보면 많이 사용하는 키워드, 기본 라이브러리( STL )이 있다. 요즘 나오는 Vis.

static-jsony.tistory.com