다음을 통해 공유


Visual Studio 2022의 새로운 C++ 기능

Visual Studio 2022는 Microsoft C++ 컴파일러 및 도구에 대한 많은 업데이트와 수정 사항을 제공합니다. 또한 Visual Studio IDE는 성능과 생산성이 크게 향상되었으며, 이제 기본적으로 64비트 애플리케이션으로 실행됩니다.

Visual Studio 버전 17.10의 새로운 C++ 기능

2024년 5월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.10의 새로운 기능
STL(표준 라이브러리) 병합 C++26 및 C++23 기능, C++20 결함 보고서, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.10
Visual Studio 17.10 IDE의 새로운 기능 Visual Studio 2022 버전 17.10 릴리스 정보
Visual Studio 2022 17.10의 C++ 언어 규칙 향상 Visual Studio 2022 17.10의 C++ 규칙 향상, 동작 변경 및 버그 수정

새 기능의 일부 목록:

  • MSVC 도구 집합 업데이트: MSVC 도구 집합 버전이 19.39에서 19.40으로 업데이트되었습니다. 이는 버전 가정이 있는 프로젝트에 영향을 미칠 수 있습니다. 이것이 Visual Studio 2022 릴리스의 MSVC 버전이 모두 19.3X라고 가정하는 프로젝트에 영향을 미치는 몇 가지 방식에 대한 자세한 내용은 VS 2022 v17.10의 MSVC 도구 집합 부 버전 번호 14.40을 참조하세요.
  • 표준 라이브러리 개선 사항: 표준 라이브러리는 이미 존재하는 정수 서식에 따라 더 많은 std::format을 사용할 때 포인터의 서식 지정자 집합을 제공하는 P2510R3 서식 지정 포인터에 대한 지원을 추가했습니다. std::min_element, std::ranges::min 및 friend의 벡터화된 구현을 개선했습니다.
  • Build Insights: 이제 템플릿 인스턴스화 정보를 제공합니다. Visual Studio의 Build Insights에 대한 템플릿 보기 또는 Pure Virtual C++ - Visual Studio의 Build Insights에 대한 템플릿 보기 레코딩을 참조하세요.
  • Unreal Engine 플러그 인: Unreal Engine 플러그 인을 백그라운드에서 실행할 수 있는 새로운 옵트인 기능이 있어 시작 비용이 절감됩니다. 이는 도구>옵션>Unreal Engine을 통해 활성화되는 옵트인 기능입니다.
  • Linux용 새로운 기능: Visual Studio의 새로운 Linux 개발 기능을 참조하세요.
  • CMake 대상: 이제 CMake 대상 보기에서 대상을 고정할 수 있습니다.
  • 연결 관리자 UX: 사용자 환경은 원격 시스템에 연결할 때 더욱 원활한 환경을 제공합니다. 자세한 내용은 Visual Studio 연결 관리자의 사용성 개선을 참조하세요.
  • 끌어오기 요청 주석: 이제 작업 파일에서 직접 GitHub 및 Azure DevOps 주석을 볼 수 있습니다. 옵션>환경>미리 보기 기능에서 기능 플래그인 끌어오기 요청 주석을 사용하도록 설정하고 끌어오기 요청 분기를 체크 아웃하여 시작합니다.
  • AI 생성 콘텐츠: 이제 GitHub Copilot이 끌어오기 요청 설명 초안을 작성할 수 있습니다. 활성 GitHub Copilot 구독이 필요합니다. 끌어오기 요청 만들기 창에서 AI 생성 끌어오기 요청 설명 추가 반짝이 펜 아이콘을 클릭하여 사용해 보세요.
  • 이미지 미리 보기: 이미지 경로를 마우스로 가리키면 크기 세부 정보가 포함된 미리 보기가 표시됩니다. 크기는 가로, 세로 500px로 제한됩니다.

    가리키기 미리 보기 스크린샷.

    마우스가 std::filesystem::path vs_logo_path = "../images/vs_logo.png" 줄 위를 가리키고 있습니다. 그 아래에는 Visual Studio 로고의 미리 보기와 크기가 251 x 500픽셀, 13.65KB라는 정보가 표시됩니다.

  • 중단점/추적점 만들기: 이제 오른쪽 클릭 메뉴를 통해 소스 코드의 식에서 직접 조건부 중단점 또는 추적점을 만들 수 있습니다. 이는 자동, 로컬, 조사식 창 또는 DataTips의 속성 또는 필드 이름과 값에 적용됩니다.
  • 프로세스에 연결 대화 상자: 프로세스에 연결 대화 상자에서 제공하는 기능이 더욱 사용자 친화적입니다. 이제 트리 보기와 목록 뷰 사이를 쉽게 전환하고, 축소 가능한 섹션을 통해 프로세스를 더 효율적으로 구성하고, 간소화된 콤보 상자로 코드 형식을 선택할 수 있습니다. 또한 이제 "창 선택/추적" 기능을 사용하기가 더 쉬워졌으며 양방향 추적이 가능해졌습니다. 프로세스를 선택하면 해당 창이 강조 표시되고 창을 클릭하면 해당 프로세스가 선택됩니다.
  • GitHub Copilot 통합: GitHub Copilot 및 Copilot 채팅 확장을 통합하여 이제 Visual Studio에서 직접 제공합니다. 이를 설치하려면, Visual Studio 설치 관리자에서 GitHub Copilot 구성 요소를 설치합니다.

    Visual Studio 설치 관리자 GitHub Copilot 설치 옵션의 스크린샷.

    GitHub Copilot 인터페이스는 Visual Studio의 오른쪽 상단에 있습니다. 이를 사용하려면 활성화된 GitHub Copilot 구독이 필요합니다.

    GitHub Copilot 단추의 스크린샷.

    GitHub Copilot 단추는 Visual Studio의 오른쪽 상단에 표시됩니다. 채팅 창 열기, GitHub Copilot 설정, 자세히 알아보기, Copilot 구독 관리 옵션이 있습니다.

Visual Studio 버전 17.9의 새로운 C++ 기능

2024년 2월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.9의 새로운 기능
STL(표준 라이브러리) 병합 C++23 기능, 성능 개선, 개선된 동작, LWG 문제 해결 및 수정된 버그 STL 변경 로그 17.9
Visual Studio 17.9 IDE의 새로운 기능 Visual Studio 2022 버전 17.9 릴리스 정보
Visual Studio 2022 17.9의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정
C++ 백 엔드 업데이트 요약 Visual Studio 2022 버전 17.3 이후 MSVC 백 엔드 업데이트

새 기능의 일부 목록:

  • #include 지시문에 대한 자세한 분석을 제공하는 #include 진단. #include를 마우스 오른쪽 단추로 클릭하고 #include 지시문>#include 지시문 진단 켜기를 선택하여 이 기능을 활성화합니다. 각 #include 위에 코드에서 해당 #include 파일을 참조하는 횟수가 있습니다. 코드가 해당 헤더 파일의 내용을 사용하는 위치를 탐색하려면 참조 링크를 클릭합니다. #include 지시문의 빌드 시간을 보려면 빌드>솔루션에서 Build Insights 실행>빌드로 이동하여 Build Insights를 실행합니다.

    #include 진단 스크린샷.

    #include 위에 **참조** 링크와 이 #include 파일에 대한 참조 번호가 있습니다(예: 1). 빌드 시간도 나열됩니다(예: 1/2초 미만).

  • 메모리 레이아웃 시각화에서 클래스, 구조체 및 공용체에 대해 메모리가 정렬되는 방식을 보여 줍니다. 형식 위에 마우스를 가리키고 빠른 정보에서 메모리 레이아웃 링크를 선택하면 선택한 형식의 메모리 레이아웃을 표시하는 전용 창이 열립니다. 이 창 내에서 개별 데이터 형식을 마우스로 가리키면 해당 형식 내 크기 및 오프셋에 대한 자세한 정보가 제공됩니다.

    메모리 레이아웃 창 스크린샷

    메모리 레이아웃 창에는 Snake 클래스의 콘텐츠가 표시됩니다. 머리와 몸의 위치에 대한 Point 클래스, 점수 등과 같은 클래스의 다양한 필드에 대한 메모리 오프셋을 보여 줍니다.

  • 이제 사용자 지정 CMake 실행 파일을 지정할 수 있습니다. 이 기능은 Visual Studio와 함께 제공되지 않는 특정 버전의 CMake를 사용하려는 경우에 유용합니다. 도구>옵션으로 이동하여 CMake>일반을 선택합니다. 사용자 지정 CMake 실행 파일 사용을 선택하고 CMake 실행 파일의 디렉터리 경로를 지정합니다.

    CMake 옵션 대화 상자 스크린샷

    "사용자 지정 CMake 실행 파일 사용" 옵션과 "CMake 실행 파일 디렉터리" 필드가 강조 표시된 CMake 옵션 대화 상자.

  • Unreal Engine 프로젝트를 위한 IntelliSense가 개선되었습니다.
  • C++23 지원 개선: std::formatstd::spanformattable, range_format, format_kindset_debug_format(). C++23 표준에 적용된 P0009R18 및 후속 문구 변경 내용에 따라 P2286R8 서식 범위<mdspan>의 일부로 지원됩니다. 또한 format()P2510R3에 따라 포인터 형식을 지정할 수 있습니다.

Visual Studio 버전 17.8의 새로운 C++ 기능

2023년 11월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.8의 새로운 기능
STL(표준 라이브러리) 병합 C++26, C++23 기능, C++20 확장, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.8
Visual Studio 17.8 IDE의 새로운 기능 Visual Studio 2022 버전 17.8 릴리스 정보
Visual Studio 2022 17.8의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정
2023년 Visual Studio, VS Code 및 vcpkg의 C++ 개선 사항에 대한 개요 C++ 개선의 해

새 기능의 일부 목록:

  • 출력 창의 C++ 구조적 진단과 오류에 대한 추가 정보를 제공하는 새로운 문제 세부 정보 창. 자세한 내용은 구조적 SARIF 출력문제 세부 정보 창을 참조하세요.
  • 코드가 컴파일되기 전에도 클래스, 구조체, 공용체, 기본 형식 또는 열거형의 크기와 맞춤을 시각화할 수 있는 기능입니다. 식별자를 마우스로 가리키면 요약 정보에 크기 및 맞춤 정보가 표시됩니다.
  • 개체의 상태를 수정하지 않기 때문에 멤버 함수 const를 표시할 시기를 제안하는 함수입니다. 멤버 함수 위에 마우스를 놓고 전구 아이콘을 클릭하여 함수를 const로 표시합니다.
  • 이제 Visual Studio에서는 함수 이름 옆에 나타나는 드라이버 아이콘을 통해 전역 함수를 정적으로 표시하라는 메시지를 표시합니다. 함수를 정적으로 표시하려면 드라이버 아이콘을 클릭합니다.
  • 사용되지 않는 #include 지시문은 편집기에서 흐리게 표시됩니다. 흐리게 표시된 포함 항목 위에 마우스를 놓고 전구 메뉴를 사용하여 해당 포함을 제거하거나 사용하지 않은 포함 항목을 모두 제거할 수 있습니다. 다른 헤더를 통해 간접적으로 포함된 엔터티에 대해 #include 지시문을 추가할 수도 있습니다. 자세한 내용은 Visual Studio에서 C/C++ 포함 항목 정리를 참조하세요.
  • 추가 Unreal Engine 지원:
    • Unreal Engine 테스트 어댑터를 사용하면 Visual Studio IDE를 벗어나지 않고도 Unreal Engine 테스트를 검색, 실행, 관리, 디버그할 수 있습니다.
    • Unreal Engine 코드 조각을 사용하면 일반적인 Unreal Engine 구문을 멤버 목록에서 코드 조각으로 찾을 수 있습니다.
    • Build Insights는 이제 Visual Studio 2022와 통합되었으며 MSVC를 사용하는 MSBuild 및 CMake 프로젝트와 함께 작동합니다. 이제 컴파일하는 데 걸린 시간, ForceInlines 수, 헤더 파일이 빌드 시간에 미치는 영향 등 함수 컴파일에 대한 추가 정보를 볼 수 있습니다. 자세한 내용은 자습서: 빌드 시간에 따른 함수 인라인 문제 해결자습서: 빌드 시간에 대한 헤더 파일 영향 문제 해결을 참조하세요.
  • 이제 원격 Linux 단위 테스트 지원을 통해 로컬 테스트와 마찬가지로 Visual Studio의 테스트 탐색기에서 원격 Linux 컴퓨터에서 CTest 및 GTest 테스트를 실행할 수 있습니다.

Visual Studio 버전 17.7의 새로운 C++ 기능

2023년 8월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.7의 새로운 기능
게임 개발과 관련된 새로운 C++ 기능 C++ 게임 개발을 위한 Visual Studio 2022의 강력한 성능 활용
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.7
Visual Studio 17.7 IDE의 새로운 기능 Visual Studio 2022 버전 17.7 릴리스 정보
Visual Studio 2022 17.7의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

새 기능의 일부 목록:

  • 빠른 디버깅 세션 및 빠른 프로젝트 로드 시간
  • 매크로 확장의 단계별 시각화
  • WSL(Linux용 Windows 하위 시스템)을 원클릭으로 다운로드
  • Doxygen 주석에 대한 지원 개선
  • 게임 개발을 위한 C++ Build Insights
  • C 컴파일러에 대해 /std:clatest를 추가했습니다.
  • Unreal Engine 프로젝트에 더 빠른 IntelliSense 및 구문 색 지정, 모든 Unreal Engine Blueprint 참조 찾기 기능 등의 개선 사항이 있습니다.

Visual Studio 버전 17.6의 새로운 C++ 기능

2023년 5월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.6의 새로운 기능
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.6
Visual Studio 17.6 IDE의 새로운 기능 Visual Studio 2022 버전 17.6 릴리스 정보
Visual Studio 2022 17.6의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

새 기능의 일부 목록은 다음과 같습니다.

  • CMake 스크립트 디버깅
  • HLSL(High Level Shading Language)에 대한 기본 지원
  • Unreal Engine 로그 뷰어
  • 이제 VCPKG가 기본적으로 추가됨
  • C++/CLI 프로젝트의 C++20 및 범위에 대한 일부 C++23 표준 라이브러리 기능에 대한 초기 지원입니다.

Visual Studio 버전 17.5의 새로운 C++ 기능

2023년 2월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.5의 새로운 기능
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.5
Visual Studio 17.5 IDE의 새로운 기능 Visual Studio 2022 버전 17.5 릴리스 정보

새 기능의 일부 목록은 다음과 같습니다.

  • std::move, std::forward, std::move_if_noexceptstd::forward_like는 이제 디버그 모드에서도 생성된 코드에서 함수 호출을 생성하지 않습니다. 이 변경으로 인해 디버그 빌드에서 불필요한 오버헤드를 유발하는 명명된 캐스트가 방지됩니다. /permissive-(또는 이를 암시하는 옵션(예: /std:c++20 또는 std:c++latest))이 필요합니다.

  • [[msvc::intrinsic]]을(를) 추가했습니다. 하나의 매개 변수만 사용하는 단일 캐스트로 구성된 비재귀 함수에 이 특성을 적용할 수 있습니다.

  • 터미널 I/O를 허용하는 통합 터미널에 Linux 콘솔에 대한 지원이 추가되었습니다.

  • C11 원자성 기본 요소(<stdatomic.h>)에 대한 초기 실험적 지원이 추가되었습니다. /std:c11 모드 이상에서 /experimental:c11atomics 옵션을 사용하여 이 실험적 기능을 사용하도록 설정할 수 있습니다.

  • 노이즈 감소를 위해 Lifetime Checker에 새로운 실험적 고신뢰도 검사 집합이 추가되었습니다.

  • 새로운 미리 보기 기능인 원격 파일 탐색기를 사용하면 VS 내의 원격 컴퓨터에 있는 파일 디렉터리를 보고 여기에 파일을 업로드 및 다운로드할 수 있습니다.

  • Kitware 버전 관리와 일치하도록 Visual Studio와 함께 제공되는 CMake 실행 파일의 버전 관리가 변경되었습니다.

  • CMake 프로젝트 템플릿에 핫 다시 로드에 대한 지원이 추가되었습니다.

  • 이제 C++용 정의로 이동은 이전 버전의 모달 대화 상자를 바꿔 더 많은 시간이 걸리는 작업에 대한 보다 미묘한 표시기를 사용합니다.

  • C++ 자동 완료 및 멤버 목록에서 더욱 스마트한 결과를 제공하는 실험의 출시가 시작되었습니다. 이 기능은 이전에 예측 IntelliSense로 알려졌지만 이제는 새로운 프레젠테이션 방법을 사용합니다.

  • 이제 LLVM 워크로드와 함께 네이티브 Arm64 Clang 도구 집합을 제공하여 Arm64 컴퓨터에서 네이티브 컴파일을 허용합니다.

  • 이미지 조사식 확장에 지역화가 추가되었습니다. 이 확장은 Marketplace에서 사용할 수 있으며 Visual Studio 설치 관리자를 통해 번들로 제공되지 않습니다.

  • 현재 실행 중인 개발자 컨테이너에 터미널 창 열기에 대한 지원이 추가되었습니다.

  • IntelliSense 매크로 확장에 대한 몇 가지 개선 사항이 적용되었습니다. 특히 더 많은 컨텍스트에서 재귀 확장을 사용하도록 설정했으며 확장을 클립보드에 복사하거나 매크로 인라인을 확장할 수 있는 옵션을 팝업에 추가했습니다.

  • 이제 직렬 모니터에서 동시 모니터링이 지원됩니다. 동시 모니터링을 사용하면 여러 포트를 동시에 나란히 모니터링할 수 있습니다. 더하기 단추를 눌러 다른 직렬 모니터를 열고 시작합니다.

  • 이제 Visual Studio를 종료하지 않고도 Unreal Blueprint 자산에서 수정된 기본 클래스의 속성을 볼 수 있습니다. C++ 클래스 또는 속성에 대한 Blueprint 참조를 두 번 클릭하여 Visual Studio에서 UE 자산 검사기를 엽니다.

  • 원격 Linux 컴퓨터에서 DevContainer 실행을 사용하도록 설정했습니다.

  • CMake 대상 보기에서 빌드할 여러 대상 선택을 사용하도록 설정했습니다.

  • CMakePresets.json 버전 5에 대한 지원이 추가되었습니다. 새로운 기능에 대한 자세한 내용은 CMake 설명서를 참조하세요.

  • 여러 CMake 대상을 병렬로 빌드하고 테스트할 수 있도록 테스트 탐색기를 사용하도록 설정했습니다.

  • Dev 컨테이너에 "터미널에서 컨테이너 열기" 옵션이 추가되었습니다.

  • 구현된 표준 라이브러리 기능:

    • P2508R1basic_format_string, format_string, wformat_string
    • P2322R6ranges::fold_left, ranges::fold_right 등.
    • P2321R2views::zip(zip_transform, adjacentadjacent_transform을 포함하지 않음)

Visual Studio 버전 17.4의 새로운 C++ 기능

2022년 11월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 C++ 개발자를 위한 Visual Studio 2022 17.4의 새로운 기능
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.4
Visual Studio 17.4 IDE의 새로운 기능 Visual Studio 2022 버전 17.4 릴리스 정보
Visual Studio 2022 17.4의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

17.4의 새로운 기능의 일부 목록:

  • 특히 개념에 대해 더 정확하고 유용한 정보를 제공하도록 컴파일러 오류 메시지가 개선되었습니다.

  • 지정된 디렉터리에 구조적 SARIF 진단을 출력하기 위해 실험적인 MSVC 옵션 /experimental:log<directory>가 추가되었습니다.

  • IntelliSense에 C23 특성에 대한 지원이 추가되었으며 C++20 모듈 지원에서 계속 진행되었습니다.

  • 새 솔루션을 열 때 인덱싱 성능이 향상되었습니다. 대규모 프로젝트는 17.3에서 20-35% 개선된 것을 볼 수 있습니다.

  • 향상된 NRVO(명명된 반환 값 최적화):

    • 예외 처리 또는 루프와 관련된 사례에 대해 NRVO가 사용하도록 설정됩니다.
    • 사용자가 /Zc:nrvo 옵션, /std:c++20 이상 또는 /permissive-를 전달하는 경우 /Od에서도 NRVO가 사용하도록 설정됩니다.
    • 이제 /Zc:nrvo- 옵션을 사용하여 NRVO를 사용하지 않도록 설정할 수 있습니다.
  • Visual Studio와 함께 제공되는 LLVM 버전을 15.0.1로 업그레이드했습니다. 사용 가능한 항목에 대한 자세한 내용은 LLVMClang 릴리스 정보를 참조하세요.

  • CMake 프로젝트를 사용하여 vcpkg 아티팩트용 Visual Studio에 대한 지원이 추가되었습니다. vcpkg 매니페스트를 포함하는 프로젝트의 경우 열려 있는 프로젝트에서 환경이 자동으로 활성화됩니다. Visual Studio에서 vcpkg 환경 활성화 블로그 게시물에서 이 기능에 대해 자세히 알아보세요.

  • 이제 C++ 프로젝트에 개발 컨테이너를 사용할 수 있습니다. C++용 개발 컨테이너 블로그 게시물에서 이 기능에 대해 자세히 알아보세요.

  • 이제 IntelliSense는 미리 포함된 헤더 중 하나가 PCH인 경우 헤더의 순서를 적용합니다. 이전에는 /Yu를 통해 PCH를 사용하고 /FI를 통해 강제로 포함되었을 때 IntelliSense는 /FI를 통해 포함된 다른 헤더에 앞서 항상 먼저 PCH를 처리했습니다. 이 동작이 빌드 동작과 일치하지 않았습니다. 이 변경으로 /FI 헤더는 지정된 순서대로 처리됩니다.

  • 테스트 탐색기의 CTest 이름에서 내부 접두사를 제거했습니다.

  • Visual Studio와 함께 제공되는 CMake 버전을 버전 3.24.1로 업데이트되었습니다. 사용 가능한 항목에 대한 자세한 내용은 CMake 릴리스 정보를 참조하세요.

  • Android SDK 업데이트:

    • Ant 스크립트가 제거되었으므로 사용자는 더 이상 새 프로젝트 대화 상자에서 Ant 기반 템플릿을 볼 수 없습니다. Ant 템플릿에서 Gradle 템플릿으로 마이그레이션하는 데 도움이 되는 도움말은 Apache Ant에서 빌드 마이그레이션을 참조하세요.
    • NDK 23 및 24를 사용하여 빌드에 대한 지원이 추가됨
    • NDK 구성 요소를 LTS 버전 23으로 업데이트
  • ranges::min_element(), ranges::max_element()ranges::minmax_element()의 벡터화된 구현이 추가됨

  • C++ 표준화의 최신 개발을 계속 추적합니다. 이러한 C++23 기능에 대한 지원은 컴파일러 옵션에 /std:c++latest를 포함하여 제공됩니다.

    • P2302R4ranges::contains, ranges::contains_subrange

    • P2499R0string_view 범위 생성자는 explicit이어야 함

    • P0849R8auto(x): 언어에서 decay 복사

      (컴파일러 부분은 아직 구현되지 않았습니다. 라이브러리 부분은 Ranges 지원이 처음 구현되었을 때 C++20 모드로 구현되었습니다.)

    • P0881R7<stacktrace>

    • P2301R1std::stacktrace에 대한 pmr 별칭 추가

    • P1328R1constexpr type_info::operator==()

    • P2440R1ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2views::join_with

  • 선언/정의 만들기 기능의 탐색 동작을 선택할 수 있는 “선언/정의 만들기 후 탐색” 옵션이 추가되었습니다. 피킹(기본값) 또는 문서 열기 중에서 선택하거나 탐색하지 않을 수 있습니다.

  • Visual Studio의 Arm64 빌드는 이제 CMake 및 Ninja의 Arm64 버전을 번들로 묶습니다.

  • CMake 사전 설정 버전 4에 대한 지원이 추가되었습니다. 사용 가능한 항목에 대한 자세한 내용은 CMake 릴리스 정보를 참조하세요.

  • 연결 관리자를 사용하는 원격 시스템 연결은 이제 SSH ProxyJump를 지원합니다. ProxyJump는 다른 SSH 호스트를 통해 SSH 호스트에 액세스하는 데 사용됩니다(예: 방화벽 뒤의 호스트에 액세스하기 위해).

Visual Studio 버전 17.3의 새로운 C++ 기능

2022년 8월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 17.3의 C++ 개선사항
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.3
Visual Studio 17.3 IDE의 새로운 기능 Visual Studio 2022 버전 17.3 릴리스 정보
Visual Studio 2022 17.3의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

17.3의 새로운 기능의 일부 목록:

  • Arm64EC 도구 체인은 더 이상 실험적으로 표시되지 않으며 프로덕션용으로 준비된 것입니다.
  • 이제 Visual Studio 터미널을 저장된 SSH 연결을 사용하여 SSH 클라이언트로 사용할 수 있습니다. Linux 도구용 C++가 설치된 상태에서 터미널 도구 창을 엽니다. 터미널 드롭다운은 저장된 연결로 채워집니다. 연결을 선택하면 원격 시스템에 의사 터미널을 표시하는 새 터미널 창이 Visual Studio 내에 열립니다. 제어 문자, 색 및 커서 위치 인식이 모두 지원됩니다.
  • 이제 Visual Studio에서 UE 프로젝트에 대한 Unreal Engine 클래스 템플릿을 추가할 수 있습니다. 이 기능을 시도하려면 Visual Studio 설치 관리자에서 C++를 사용한 게임 개발 워크로드의 Unreal Engine에 대한 IDE 지원이 선택되어 있는지 확인합니다. UE 프로젝트에 대해 작업할 때 프로젝트 또는 폴더/필터를 마우스 오른쪽 단추로 클릭하고 추가>UE 클래스를 선택합니다.
  • 정의로 이동은 이제 이전 서명을 기억하고 더 나은 일치를 사용할 수 없는 경우(예: 쌍 중 하나의 서명을 수동으로 변경한 후) 그에 따라 탐색합니다. 전체로 이동의 응답성이 개선되었습니다. 이전에는 입력을 중지한 후 결과가 표시되었지만 새 환경에서 입력 중에 결과가 표시됩니다.
  • enum 형식 완성이 필요한 컨텍스트(예: enum 변수, 사례 레이블, 반환 enum 형식 등에 대한 할당)에서 자동 완성 목록은 이제 일치하는 열거자 및 관련 구문으로만 필터링됩니다.
  • .NET Core를 대상으로 하는 C++/CLI MSBuild 프로젝트에 대한 NuGet PackageReference 지원이 추가되었습니다. 이 변경은 혼합 코드베이스가 .NET Core를 채택할 수 없도록 차단을 해제하기 위해 수행되었습니다. 이 지원은 다른 C++ 프로젝트 형식 또는 .NET Framework 대상으로 하는 C++ 프로젝트 형식에는 작동하지 않습니다. PackageReference 지원을 다른 C++ 시나리오로 확장할 계획은 없습니다. 팀에서 MSBuild가 아닌 시나리오에 대한 vcpkg와 관련된 별도의 환경을 개발하고 더 많은 기능을 추가하고 있습니다.
  • 개발을 위한 직렬 모니터 창이 추가되었고 디버그>Windows>직렬 모니터를 통해 사용할 수 있습니다.
  • 17.2에 비해 C++ 인덱싱이 66%까지 향상되었습니다.
  • Visual Studio와 함께 제공되는 CMake 버전을 버전 3.23으로 업데이트되었습니다. 사용 가능한 항목에 대한 자세한 내용은 CMake 3.23 릴리스 정보를 참조하세요.
  • Visual Studio와 함께 제공되는 LLVM 도구 버전을 v14로 업그레이드했습니다. 사용 가능한 항목에 대한 자세한 내용은 LLVMClang 릴리스 정보를 참조하세요.
  • 병렬 개발 16.11 C++ 도구 집합을 버전 14.29.30145.00으로 업데이트했습니다. 개발 16.11 C++ 도구 집합의 최신 버전에는 나머지 모든 C++20 결함 보고서 수정을 비롯한 중요한 버그 수정이 포함되어 있습니다. 개발 16.11의 C++20 결함 보고서를 비롯한 버그 수정에 대한 자세한 내용은 Visual Studio 2019 버전 16.11.14 릴리스 정보를 참조하세요.
  • C++ 모듈의 편집기 내 환경을 다양하게 개선했습니다. 우리는 지속적으로 경험의 품질을 개선하기 위해 노력하고 있지만 17.3에서 시도하는 것이 좋습니다. Developer Community를 통해 나머지 문제를 보고합니다.

Visual Studio 버전 17.2의 새로운 C++ 기능

2022년 5월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 이제 Visual Studio 2022 17.2 사용 가능
STL(표준 라이브러리) 병합 C++20 결함 보고서, C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.2
Visual Studio 17.2 IDE의 새로운 기능 Visual Studio 2022 버전 17.2 릴리스 정보
Visual Studio 2022 17.2의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

17.2의 새로운 기능의 일부 목록:

  • C++23의 this 추론하기 기능에 대한 컴파일러 지원이 추가되었으며, /std:c++latest 옵션에서 사용가능합니다.
  • C++23의 this추론하기if consteval 기능에 대한 IntelliSense 지원이 추가되었습니다.
  • 인라인 매개 변수 이름과 형식 힌트 지원이 추가되었습니다. Alt+F1 키를 누르거나 Ctrl을 두 번 탭하면 토글됩니다. 이 동작은 도구 > 옵션 > 텍스트 편집기 > C/C++ > IntelliSense에서 사용자 지정할 수 있습니다.
  • CMake 프로젝트에 C++20 모듈에 대한 실험적인 지원이 추가되었습니다. 현재 이 기능은 Visual Studio(MSBuild) 생성기에서만 사용할 수 있습니다.
  • 17.1에서는 임베디드 개발자를 위한 주변 장치 레지스터 및 RTOS 보기를 도입했습니다. 17.2의 유용성 개선 사항을 통해 이러한 보기의 기능이 계속해서 개선될 것입니다.
    • RTOS 도구 창은 이제 기본적으로 숨겨집니다. 따라서 RTOS를 사용하지 않을 때는 관련이 없는 오류 메시지가 도구 창에 표시되지 않습니다.
    • 도구 창에서 RTOS 개체를 두 번 클릭하면 개체에 대한 조사식이 추가됩니다.
    • RTOS 도구 창에서 스택 포인터의 시작 및 끝 값을 선택하면 메모리 창에서 열립니다.
    • 호출 스택 창에 디바이스 대상에 대한 스레드 인식이 추가되었습니다.
    • 이제 주변 장치, 레지스터 또는 필드는 그 옆의 고정 아이콘을 클릭하면 주변 장치 보기의 최상단에 고정할 수 있습니다.
  • 나머지 C++20 결함 보고서( 백포트라고도 함)의 구현이 추가되었습니다. 이제 모든 C++20 기능을 /std:c++20 옵션에서 사용할 수 있습니다. 구현된 백포트에 대한 자세한 내용은 Microsoft/STL GitHub 리포지토리의 C++20 결함 보고서 프로젝트MSVC's STL Completes /std:c++20 블로그 게시물을 참조하세요.
  • /std:c++latest 옵션에서 사용할 수 있는 다양한 C++23 라이브러리 기능을 추가했습니다. 새 기능에 대한 자세한 내용은 STL 리포지토리 변경 로그를 참조하세요.
  • 포함 그래프의 깊이에 따라 초기 C++ 인덱싱의 성능이 최대 20%까지 향상되었습니다.

Visual Studio 버전 17.1의 새로운 C++ 기능

2022년 2월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 이제 Visual Studio 2022 17.1을 사용할 수 있습니다!
STL(표준 라이브러리) 병합 C++23 기능, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.1
Visual Studio 17.1 IDE의 새로운 기능 Visual Studio 2022 버전 17.1 릴리스 정보
Visual Studio 2022 17.1의 C++ 언어 규칙 향상 Visual Studio 2022의 C++ 규칙 향상, 동작 변경 및 버그 수정

17.1의 새로운 기능의 일부 목록:

  • CMakePresets.json을 사용하여 원격 macOS 시스템에서 CMake 프로젝트를 구성하고 빌드하기 위한 새 구성 사전 설정 템플릿이 추가되었습니다. 원격 macOS 시스템에서 CMake 대상을 시작하고 GDB 또는 LLDB로 지원되는 Visual Studio 디버거에서 원격으로 디버그할 수도 있습니다.
  • 이제 LLDB 또는 GDB를 사용하여 Visual Studio에서 원격 macOS 시스템의 코어 덤프를 디버그할 수 있습니다.
  • Visual Studio와 함께 제공되는 ClangLLVM 버전이 v13으로 업그레이드되었습니다.
  • Visual Studio의 CMake 통합은 열려 있는 작업 영역의 루트에서 CMakeLists.txt가 식별되는 경우에만 활성화됩니다. 다른 수준의 작업 영역에서 CMakeLists.txt가 식별되면 알림을 통해 Visual Studio의 CMake 통합을 활성화하라는 메시지가 표시됩니다.
  • 마이크로컨트롤러 및 RTOS(실시간 운영 체제) 개체의 주변 장치 레지스터를 검사하고 상호 작용할 수 있도록 하는 새 보기(디버그>Windows>임베디드 레지스터를 통해 사용 가능)
  • 디버그>Windows>RTOS 개체를 통해 사용할 수 있는 RTOS 프로젝트에 대한 새 스레드 뷰가 추가되었습니다. 자세한 내용은 Visual Studio의 포함 소프트웨어 개발을 참조하세요.

Visual Studio 버전 17.0의 새로운 C++ 기능

2021년 11월 릴리스

에 대한 자세한 내용은 참조
Visual Studio 17.0 IDE의 새로운 기능 Visual Studio 2022 버전 17.0 릴리스 정보
STL(표준 라이브러리) 병합 C++26 및 C++23 기능, C++20 결함 보고서, LWG 문제 해결, 성능 개선, 개선된 동작 및 수정된 버그 STL 변경 로그 17.0
Visual Studio 2022 17.0의 C++ 언어 규칙 향상 Visual Studio 2022 17.10의 C++ 규칙 향상, 동작 변경 및 버그 수정

Visual Studio 2022 버전 17.0의 일부 새로운 기능에 대한 개요는 다음과 같습니다.

  • Visual Studio IDE( devenv.exe )는 이제 네이티브 64비트 애플리케이션입니다.
  • 이제 MSVC 도구 집합은 디버그 레코드의 SHA-256 원본 해시로 기본 설정됩니다. 이전에는 도구 집합이 기본적으로 원본 해시에 MD5를 사용했습니다.
  • v143 빌드 도구는 이제 Visual Studio 설치 관리자를 통해 사용할 수 있으며 독립 실행형 빌드 도구에서도 사용할 수 있습니다.

네이티브 C++용 핫 다시 로드

  • C++용 핫 다시 로드를 사용하면 실행 중인 앱에서 많은 형식의 코드를 편집하고 중단점처럼 앱 실행을 일시 중지할 필요 없이 적용할 수 있습니다.

Visual Studio 2022에서는 디버거에서 앱을 시작할 때 핫 다시 로드 단추를 사용하여 애플리케이션이 실행되는 동안 애플리케이션을 수정할 수 있습니다. 이 환경은 네이티브 편집하며 계속하기로 구동됩니다. 지원되는 편집에 대한 자세한 내용은 편집하며 계속하기(C++)를 참조하세요.

  • 핫 다시 로드는 CMake 및 Open Folder 프로젝트를 지원합니다.

WSL2 지원

  • 이제 SSH 연결을 설정하지 않고도 WSL2에서 기본적으로 빌드하고 디버그할 수 있습니다. 플랫폼 간 CMake 프로젝트와 MSBuild 기반 Linux 프로젝트가 모두 지원됩니다.

향상된 CMake 지원

  • Visual Studio와 함께 제공되는 CMake 버전이 버전 3.21로 업그레이드되었습니다. 이 버전에서 사용할 수 있는 기능에 대한 자세한 내용은 CMake 3.21 릴리스 정보를 참조하세요.

  • CMake 개요 페이지가 CMakePresets.json을 지원하도록 업데이트되었습니다.

  • 이제 CMake 3.21 및 CMakePresets.json v3을 사용하여 CMake 프로젝트를 구성하고 빌드할 수 있습니다.

  • Visual Studio가 이제 CMakePresets.jsonbuildPresets.targets 옵션을 지원합니다. 이 옵션을 통해 CMake 프로젝트에서 대상의 하위 집합을 빌드할 수 있습니다.

  • CMake 프로젝트의 프로젝트 메뉴가 간소화되었으며 "캐시 삭제 및 다시 구성" 및 "캐시 보기" 옵션이 표시됩니다.

  • P1689R5에 설명된 것처럼 CMake 프로젝트의 C++20 모듈 종속성을 나열하도록 /scanDependencies 컴파일러 옵션이 구현되었습니다. 이는 CMake를 통해 모듈 기반 프로젝트를 빌드하기 위한 지원 단계이며, 이후 릴리스에서 이 지원을 완료하기 위해 노력하고 있습니다.

표준 라이브러리 향상

표준 라이브러리(STL) 향상 내용이 여기에 강조 표시되어 있습니다. 새 기능, 변경 내용, 버그 수정 및 성능 향상에 대한 포괄적인 목록은 STL 팀의 Changelog를 참조하세요.

  • source_location, bind_front(), u8string(및 반복기), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view(및 반복기/sentinel), ranges::ref_view, thread, thread::id, jthreadfilesystem::path 형식이 표시되는 방식을 개선하기 위해 디버깅 시각화 도우미를 추가했습니다.
  • collate 멤버 함수, has_facet(), isalnum(), tolower() 패밀리처럼 <string>stoi() 함수 패밀리와 <locale>의 다양한 함수에 [[nodiscard]]를 추가했습니다.
  • P0980R1 VS 2019 16.10에 std::stringconstexpr을 만들었습니다. 이제 Clang이 지원됩니다.
  • P1004R2 VS 2019 16.10에 std::vectorconstexpr을 만들었습니다. 이제 Clang이 지원됩니다.

눈의 띄는 C++23 기능

  • P1048R1 형식이 범위가 지정된 열거형인지 여부를 검색하는 C++ 표준 라이브러리의 새 특성인 is_scoped_enum을 추가했습니다.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains()basic_stringbasic_string_view의 경우
  • P1682R3 열거형의 경우 to_underlying()
  • P2162R2std::variant에서 상속 허용
  • P2166R1nullptr에서 basic_stringbasic_string_view 생성 금지 이는 원본 호환성이 손상되는 변경입니다. 이전에 런타임에 정의되지 않은 동작이 있었던 코드는 이제 컴파일러 오류로 거부됩니다.
  • P2186R2 가비지 수집 지원을 제거했습니다. 이 변경은 declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety를 제거합니다. 이전에는 이러한 함수가 영향을 미치지 않았습니다.

눈에 띄는 성능 향상

  • <format>이 이제 basic_string 또는 vector에 대해 back_insert_iterator에 기록되는 때를 검색하고 컨테이너의 end()에서 insert()로 빠르게 호출합니다.
  • vector<bool>에 대한 std::find()std::count()가 19배, 26배 향상되었습니다.
  • vector<bool>에 대한 std::count()의 성능이 향상되었습니다.
  • std::byte가 이제 reverse()variant::swap()에서 unsigned char와 성능이 같아졌습니다.

Clang 및 LLVM 지원

  • Visual Studio와 함께 제공되는 LLVM 도구는 LLVM 12로 업그레이드됩니다. 자세한 내용은 LLVM 릴리스 정보를 참조하세요.

  • Clang-cl 지원이 LLVM 12로 업데이트되었습니다.

  • 원격 시스템에서 실행되는 프로세스를 Visual Studio에서 LLDB를 사용하여 디버그할 수 있습니다.

C++ AMP가 사용되지 않음

  • C++ AMP 헤더는 이제 사용되지 않습니다. C++ 프로젝트에 <amp.h>를 포함하면 빌드 오류가 발생합니다. 오류를 해결하려면 _SILENCE_AMP_DEPRECATION_WARNINGS를 정의합니다. 자세한 내용은 AMP 사용 중단 링크를 참조하세요.

IntelliSense 개선 사항

  • 가져온 모듈 및 헤더 단위의 형식에 대한 탐색 및 구문 강조 표시를 제공하는 경우 C++ IntelliSense 기능이 개선되었습니다. IntelliSense는 Microsoft의 실질적인 투자 영역입니다. 개선할 수 있도록 도와주세요. Developer Community에서 도움말>피드백 보내기를 사용하여 피드백을 공유하세요.
  • 캐시된 헤더 사용 및 기호 데이터베이스 액세스를 최적화하여 C++ IntelliSense 성능을 향상함으로써 코드로 가져올 수 있는 로드 시간이 향상되었습니다.
  • 이제 C++용 IntelliSense 코드 Linter가 기본적으로 설정되어 입력에 따른 즉각적인 제안 및 일반적인 코드 결함에 대한 수정 제한 사항을 제공합니다.
  • 이제 CMake 프로젝트용 C++ IntelliSense가 표시 이름으로 사전 설정을 사용할 때 작동합니다.

C++ 워크로드 업데이트

  • C++ 모바일 개발 워크로드의 NDK r21 LTS로 업데이트되었습니다.
  • 이제 C++를 사용한 게임 개발 워크로드는 Visual Studio 2022를 지원하는 최신 Unreal Engine을 설치합니다.

코드 분석 개선

  • 이제 코드 분석에서 _Check_return_ 또는 _Must_inspect_result_로 주석이 지정된 함수의 반환 값을 확인해야 합니다.
  • 코드 분석 도구에서 Null 포인터 역참조 검색이 개선되었습니다.
  • gsl::not_null에 대한 지원이 코드 분석에 추가되었습니다.
  • /fsanitize=fuzzer 컴파일러 옵션에서 Libfuzzer를 지원합니다.

이전 버전의 릴리스 정보

이전 C++ 버전의 릴리스 정보도 제공됩니다.

알려진 문제

C++ IntelliSense

Visual Studio 2022에서 C++에 대한 기타 미해결 문제 및 사용 가능한 해결 방법에 대한 자세한 내용은 C++ Developer Community 문제 목록을 참조하세요.

피드백 및 제안

많은 의견 부탁드립니다. 설치 관리자나 Visual Studio IDE의 오른쪽 위에 있는 피드백 보내기를 사용하거나 도움말>피드백 보내기에서 문제를 보고하거나 기능을 제안할 수 있습니다. 설명을 추가하거나 해결 방법을 찾을 수 있는 Visual Studio Developer Community를 사용하여 문제를 추적할 수 있습니다. 라이브 채팅 지원을 통해 무료 설치 도움말을 가져올 수도 있습니다.

블로그

모든 새 릴리스에 대한 최신 정보를 얻으려면 Microsoft 개발자 블로그 사이트에서 제공되는 정보와 권장 사항을 활용합니다. 블로그에는 다양한 기능에 대한 심층적인 게시물이 제공됩니다. C++ 팀 블로그Visual Studio 블로그에 특별히 관심 있는 내용이 있습니다.