anothel의 지식 창고

MSVC 버전과 Visual Studio: _MSC_VER 매크로를 통한 버전 매칭 완벽 정리 본문

기술 노트

MSVC 버전과 Visual Studio: _MSC_VER 매크로를 통한 버전 매칭 완벽 정리

anothel 2022. 2. 7. 12:40

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 버전을 확인할 수 있는 중요한 도구이다. 이를 통해 코드 호환성을 유지하고, 특정 환경에 맞는 최적화나 기능을 구현할 수 있다.

728x90