본문 바로가기

Development/C++

[C++] _MSC_VER

 

가끔씩 오픈 소스등을 사용하다보면, 소스 내에서 _MSC_VER 이라는 상수를 본 적이 있을겁니다.
이 _MSC_VER의 이름으로 유추해보면 MS C++의 버전 정보라는 것을 알 수가 있습니다. 


_MSC_VER는 MS Visual C++의 컴파일러의 자체 매크로 상수입니다.

특별히 개발자가 따로 지정하지 않더라도, 컴파일러 내부에 정의되어 있는 상수입니다.
이 매크로 값을 이용해서 Visual C++의 버전에 따라 자동으로 분기되는 소스 코드를 작성할 수 있습니다.

다음은 오픈소스인 TinyXML의 소스 일부입니다.

view source

 

print?

01.// Microsoft compiler security

02.FILE* TiXmlFOpen(const char* filename, const char* mode)

03.{

04.#if defined(_MSC_VER) && (_MSC_VER >= 1400)

05. 

06.FILE*   fp=0;

07.errno_t err=fopen_s(&fp, filename, mode);

08.if(!err && fp)

09.{

10.return fp;

11.}

12. 

13.return 0;

14.#else

15.return fopen(filename, mode);

16.#endif

17.}


_MSC_VER이 정의가 되어 있는지, 그리고 그 값이 1400이상인지 아닌지 체크한 다음, 각 컴파일러 버전에 따라
알맞은 루틴으로 분기하게 되어 있습니다.

이 _MSC_VER 값은 Visual C++ 버전에 따라 다음과 같습니다.

Visual C++4.0 : _MSC_VER = 1000
Visual C++5.0 : _MSC_VER = 1100
Visual C++6.0 : _MSC_VER = 1200
Visual C++7.0 : _MSC_VER = 1300
Visual C++8.0 : _MSC_VER = 1400
Visual C++9.0 : _MSC_VER = 1500

그렇게 많이 쓰이거나 중요한 부분은 아니지만,
그래도 대략 이 값이 어떤 의미를 가졌는지 알면 나쁠 건 없으니깐요. ^^

 

 

 

출처: https://snowbora.tistory.com/365 [눈보라 이야기]

 

 

 

 

 

 

docs.microsoft.com/ko-kr/cpp/preprocessor/predefined-macros?view=msvc-160

 

미리 정의된 매크로

Microsoft C++ 컴파일러의 미리 정의된 전처리기 매크로가 나열 및 설명되어 있습니다.

docs.microsoft.com

 

'Development > C++' 카테고리의 다른 글

NetStream (Examples)  (0) 2022.03.16
C/C++ 자료형  (0) 2022.03.16
Signed vs Unsigned  (0) 2020.10.31
UTF-8 string to wstring  (0) 2020.09.18
wstring to UTF-8 string  (0) 2020.09.17