Visual Studio에 정의된 매크로 _MSC_VER는 현재 사용 중인 Visual Studio의 버전을 나타냅니다. 제 생각에는 Visual Studio의 버전이 아닌, MFC의 버전을 나타낼 줄 알았는데 그게 아니더라구요.
아래 2장의 캡쳐는 그걸 설명한 겁니다.
OiProtractor라는 임의의 프로젝트를 비주얼 스튜디오 2013으로 연 뒤, 프로젝트 속성의 플랫폼 도구 집합을 한 번은 2013(12.0)으로, 또 한 번은 010(10.0)바꾸고 버전을 확인하니 둘 다 12.0을 가르키는 1800이 나왔습니다. IDE버전과 MFC버전 간의 관계 개념이 부족하면 헷갈릴 수 있습니다만, 아무튼 MFC 버전이 12.0의 프로젝트든 10.0의 프로젝트든, Visual Studio 2013으로 열면 _MSC_VER는 현재 사용중인 IDE의 버전 1800(12.0)이 나왔습니다.
저도 쓰다보니 헷갈리는 데 -.- 틀린 부분이 있다면, 알려주시면 감사하겠습니다.
Visual Studio 버전별 _MSC_VER 값 등의 표
패키지 이름 |
컴파일러 버전 |
_MSC_VER |
MFC 버전 |
닷넷 버전 |
출시 |
Microsoft C 5.0 / Quick-C 1.0 |
5.0 |
500 |
- |
- |
1987년 |
Microsoft C 5.1 / Quick-C 2.0 |
5.1 |
500 |
- |
- |
1989년 |
Microsoft C 6.0 |
6.0 |
600 |
- |
- |
1989년 |
Microsoft C/C++ 7.0 |
7.0 |
700 |
1.0 |
- |
1992년 |
Visual C++ 1.0 / Quick-C 2.5 |
8.0 |
800 |
2.0 |
- |
1993년 |
Visual C++ 1.5 |
8.0 |
800 |
2.5 |
- |
1993년 |
Visual C++ 1.52c |
8.0 |
800 |
2.5 |
- |
1994년 |
Visual C++ 2.0 |
9.0 |
900 |
3.0 |
- |
1995년 |
Visual C++ 2.1 |
9.1 |
900 |
3.1 |
- |
1995년 |
Visual C++ 2.2 |
9.2 |
900 |
3.2 |
- |
1995년 |
Visual C++ 4.0 |
10.0 |
1000 |
4.0 |
- |
1996년 |
Visual C++ 4.1 |
10.1 |
1010 |
4.1 |
- |
1996년 |
Visual C++ 4.2 |
10.2 |
1020 |
4.2 |
- |
1996년 |
Visual C++ 5.0 |
11.0 |
1100 |
4.21 |
- |
1997년 |
Visual C++ 6.0 |
12.0 |
1200 |
6.0 |
- |
1998년 |
Visual C++ .NET 2002 (7.0) |
13.00 |
1300 | 7.0 |
1.0 |
2002년 |
Visual C++ .NET 2003 (7.1) |
13.10 |
1310 |
7.1 |
1.1 |
2003년 |
Visual C++ 2005 (8.0) |
14.00.50727.762 |
1400 |
8.0 |
2.0 |
2005년 |
Visual C++ 2008 (9.0) |
15.00.30729.01 |
1500 |
9.0 |
3.5 |
2007년 |
Visual C++ 2010 (10.0) |
16.00.40219.01 |
1600 |
10 |
4.0 |
2010년 |
Visual C++ 2012 (11.0) |
17.00.60315.1 |
1700 |
11 |
4.5 |
2012년 |
Visual C++ 2013 (12.0) |
18.0.21005.1 |
1800 |
12 |
4.5.1 |
2013년 |
출처 : wikipedia
상기의 표를 참고하여 Visual Studio 버전에 따라 코드를 달리 작성할 수 있습니다.
저는 주로 C++11의 코드를 작성할 때 쓰는 편입니다.
12.0 버전에서는 C++11코드로, 10.0 버전 이하에서는 C++98 버전으로 한다던지 말입니다.