anothel의 지식 창고
MSVC 버전과 Visual Studio: _MSC_VER 매크로를 통한 버전 매칭 완벽 정리 본문
1. 개요
MSVC(마이크로소프트 비주얼 C++)와 Visual Studio는 소프트웨어 개발에서 필수적인 툴체인으로, 코드 작성, 디버깅, 빌드 등의 과정을 효율적으로 관리할 수 있도록 돕는 도구이다. MSVC는 특히 C++ 개발에 강점을 가지며, Visual Studio는 이를 통합하여 다양한 언어와 플랫폼을 지원하는 개발 환경을 제공한다. 각 버전은 고유한 특징을 가지며, 컴파일러 버전을 확인해야 특정 기능의 지원 여부를 파악할 수 있다. 이를 위해 MSVC는 _MSC_VER 매크로를 제공하며, 각 버전에 대응하는 값을 통해 버전을 추적할 수 있다.
이 글에서는 MSC 및 MSVC 버전의 변화와 활용법, Visual Studio 버전의 특징, 그리고 _MSC_VER 값을 체계적으로 정리하여, 독자가 컴파일러 환경을 명확히 이해하고 이를 효과적으로 활용할 수 있도록 안내한다.
2. MSC와 MSVC 버전 매칭표
2.1 MSC 버전 (Visual Studio 이전)
MSC는 Visual Studio 이전 MS 컴파일러의 버전으로, 초기 개발 환경에서 사용되었다. 예를 들어, MSC 1.0은 MS-DOS 기반 소프트웨어 개발에 활용되었으며, MSC 5.0과 6.0은 Windows 3.x 애플리케이션 제작에 주로 사용되었다. 예를 들어, MSC 1.0~7.0은 MS-DOS 및 Windows 3.x와 같은 운영 체제에서 기본적인 소프트웨어 개발을 지원하는 데 사용되었다.
MSC 버전 | _MSC_VER 값 |
MSC 1.0 | 100 |
MSC 2.0 | 200 |
MSC 3.0 | 300 |
MSC 4.0 | 400 |
MSC 5.0 | 500 |
MSC 6.0 | 600 |
MSC 7.0 | 700 |
2.2 MSVC와 Visual Studio 버전 매칭
Visual Studio와 함께 MSVC는 더욱 강력한 기능을 제공하기 시작했다. Visual Studio 통합 이후, MSVC는 현대적인 IDE와 연결되어 향상된 디버깅 기능, 코드 분석, 그리고 멀티플랫폼 지원을 포함하는 다양한 생산성 도구를 제공하게 되었다. 예를 들어, 실시간 코드 분석, 강력한 리팩토링 도구, 그리고 Azure와 같은 클라우드 플랫폼과의 통합 기능 등이 추가되었다. 아래는 Visual Studio 버전과 MSVC 버전, _MSC_VER 값을 정리한 표이다.
MSVC++ 버전 | _MSC_VER 값 | Visual Studio 버전 | 세부 버전 |
MSVC++ 1.0 | 800 | - | - |
MSVC++ 2.0 | 900 | - | - |
MSVC++ 4.0 | 1000 | Developer Studio 4.0 | - |
MSVC++ 4.2 | 1020 | Developer Studio 4.2 | - |
MSVC++ 5.0 | 1100 | Visual Studio 97 | version 5.0 |
MSVC++ 6.0 | 1200 | Visual Studio 6.0 | version 6.0 |
MSVC++ 7.0 | 1300 | Visual Studio .NET 2002 | version 7.0 |
MSVC++ 7.1 | 1310 | Visual Studio .NET 2003 | version 7.1 |
MSVC++ 8.0 | 1400 | Visual Studio 2005 | version 8.0 |
MSVC++ 9.0 | 1500 | Visual Studio 2008 | version 9.0 |
MSVC++ 10.0 | 1600 | Visual Studio 2010 | version 10.0 |
MSVC++ 11.0 | 1700 | Visual Studio 2012 | version 11.0 |
MSVC++ 12.0 | 1800 | Visual Studio 2013 | version 12.0 |
MSVC++ 14.0 | 1900 | Visual Studio 2015 | version 14.0 |
MSVC++ 14.1 | 1910 | Visual Studio 2017 | version 15.0 |
MSVC++ 14.11 | 1911 | Visual Studio 2017 (Update 1) | version 15.3 |
MSVC++ 14.12 | 1912 | Visual Studio 2017 (Update 2) | version 15.5 |
MSVC++ 14.13 | 1913 | Visual Studio 2017 (Update 3) | version 15.6 |
MSVC++ 14.14 | 1914 | Visual Studio 2017 (Update 4) | version 15.7 |
MSVC++ 14.15 | 1915 | Visual Studio 2017 (Update 5) | version 15.8 |
MSVC++ 14.16 | 1916 | Visual Studio 2017 (Update 6) | version 15.9 |
MSVC++ 14.2 | 1920 | Visual Studio 2019 | version 16.0 |
MSVC++ 14.21 | 1921 | Visual Studio 2019 (Update 1) | version 16.1 |
MSVC++ 14.22 | 1922 | Visual Studio 2019 (Update 2) | version 16.2 |
MSVC++ 14.23 | 1923 | Visual Studio 2019 (Update 3) | version 16.3 |
MSVC++ 14.24 | 1924 | Visual Studio 2019 (Update 4) | version 16.4 |
MSVC++ 14.25 | 1925 | Visual Studio 2019 (Update 5) | version 16.5 |
MSVC++ 14.26 | 1926 | Visual Studio 2019 (Update 6) | version 16.6 |
3. 활용 예시
다음은 _MSC_VER 매크로를 사용하여 코드의 호환성을 유지하는 예제이다. 추가적으로, 각 조건에 따른 구체적인 코드 사용 사례를 아래에 포함하였다. 예를 들어, 특정 버전에서만 제공되는 라이브러리를 사용할 경우 다음과 같은 조건부 코드를 작성할 수 있다.
#if _MSC_VER >= 1920
// Visual Studio 2019 이상
#elif _MSC_VER >= 1910
// Visual Studio 2017
#elif _MSC_VER >= 1900
// Visual Studio 2015
#else
// 그 외 버전
#endif
이처럼 조건부 컴파일을 통해 다양한 Visual Studio 환경에서도 호환성을 유지할 수 있다.
4. 결론
_MSC_VER 매크로는 MSVC 버전과 Visual Studio 버전을 확인할 수 있는 중요한 도구이다. 이를 통해 코드 호환성을 유지하고, 특정 환경에 맞는 최적화나 기능을 구현할 수 있다.
'기술 노트' 카테고리의 다른 글
애자일 선언과 소프트웨어 장인 정신: 더 나은 개발을 위한 나의 다짐 (0) | 2022.02.10 |
---|---|
형상 관리 도구의 선택: Git, SVN, 그리고 DevOps 환경에서의 최적화 (4) | 2022.02.09 |
개발과 운영의 경계를 허물다: 데브옵스와 실무 경험기 (1) | 2022.02.08 |
GitLab Runner 설치 및 설정 가이드 (0) | 2022.01.21 |
레거시 코드와의 씨름: C에서 C++로의 마이그레이션 여정 (0) | 2021.07.05 |