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

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

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

간단히 말해, 몇 가지 새로운 기능은 다음과 같습니다.

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

    Screenshot of #include diagnostics

    #include 위에는 **reference** 링크와 이 #include 파일(이 경우 1)에 대한 여러 참조가 있습니다. 빌드 시간도 나열됩니다(이 경우 초당 1/2 미만).

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

    Screenshot of the memory layout window

    메모리 레이아웃 창에는 Snake 클래스의 내용이 표시됩니다. 헤드 및 본문의 위치에 대한 Point 클래스, 점수 등 클래스의 다양한 필드의 메모리 오프셋을 보여 줍니다.

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

    Screenshot of the CMake options dialog

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

  • Unreal Engine 프로젝트에 대한 IntelliSense가 향상되었습니다.
  • C++23 표준에 적용된 P0009R18 및 후속 단어 변경 내용당 P2286R8 서식 범위<mdspan>일부로 C++23 지원이 std::spanset_debug_format()range_formatformattableformat_kindstd::format 향상되었습니다. format() 또한 P2510R3당 포인터의 서식을 지정할 수 있습니다.

C++ 백 엔드 업데이트에 대한 요약은 Visual Studio 2022 버전 17.3 이후 MSVC 백 엔드 업데이트를 참조하세요.

Visual Studio 17.9 IDE의 새로운 기능에 대한 요약은 Visual Studio 2022 버전 17.9 릴리스 정보를 참조 하세요.

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

간단히 말해, 몇 가지 새로운 기능은 다음과 같습니다.

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

Visual Studio 17.8의 새로운 C++ 기능에 대한 포괄적인 요약은 Visual Studio 2022 17.8의 C++ 개발자를 위한 새로운 기능을 참조하세요.

Visual Studio 17.8 IDE의 새로운 기능에 대한 요약은 Visual Studio 2022 버전 17.8 릴리스 정보를 참조 하세요.

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

Visual Studio 17.7의 새로운 C++ 기능에 대한 요약은 Visual Studio 2022 17.7의 C++ 개발자를 위한 새로운 기능을 참조하세요.

간단히 말해, 몇 가지 새로운 기능은 다음과 같습니다.

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

게임 개발과 관련된 새로운 C++ 기능에 대한 요약은 C++ 게임 개발을 위한 Visual Studio 2022의 강력한 기능을 참조 하세요.

Visual Studio 17.7 IDE의 새로운 기능에 대한 요약은 Visual Studio 2022 버전 17.7 릴리스 정보를 참조 하세요.

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

Visual Studio 17.6의 새로운 C++ 기능에 대한 요약은 Visual Studio 2022 17.6의 C++ 개발자를 위한 새로운 기능을 참조하세요.

간단히 말해, CMake 스크립트 디버깅, HLSL(High Level Shading Language), Unreal Engine 로그 뷰어에 대한 기본 제공 지원, C++/CLI 프로젝트의 C++20에 대한 초기 지원, 이제 VCPKG가 기본적으로 추가되고, 범위에 대한 일부 C++23 표준 라이브러리 기능이 추가되었습니다. 표준 라이브러리에 추가된 새로운 기능의 전체 목록을 보려면 STL 변경 로그참조하세요.

Visual Studio 17.6 IDE의 새로운 기능에 대한 요약은 Visual Studio 2022 버전 17.6 릴리스 정보를 참조 하세요.

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

버전 17.5에서 Visual Studio의 새로운 C++ 기능에 대한 요약은 Visual Studio 2022 17.5의 C++ 개발자를 위한 새로운 기능을 참조하세요. Visual Studio IDE 버전 17.5의 새로운 기능 및 버그 수정에 대한 요약은 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 사용하도록 설정할 수 있습니다.

  • 노이즈를 줄이기 위해 수명 검사에 새로운 실험적 높은 신뢰도 검사 집합을 추가했습니다.

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

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

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

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

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

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

  • Image Watch 확장지역화가 추가되었습니다(이 확장은 Marketplace에서 사용할 수 있으며 Visual Studio 설치 관리자 번들로 제공되지 않음).

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

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

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

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

  • 원격 Linux 컴퓨터에서 DevContainers를 실행할 수 있습니다.

  • CMake 대상 보기에서 빌드할 여러 대상을 선택할 수 있습니다.

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

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

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

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

    • basic_format_stringP2508R1, format_string,wformat_string
    • ranges::fold_leftranges::fold_rightP2322R6 등입니다.
    • views::zip P2321R2(포함 zip_transform안 됨, adjacentadjacent_transform)

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

버전 17.4에서 Visual Studio의 새로운 기능 및 버그 수정에 대한 요약은 Visual Studio 2022 버전 17.4 릴리스 정보Visual Studio 2022 17.4의 C++ 개발자를 위한 새로운 기능을 참조하세요.

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

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

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

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

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

    • 예외 처리 또는 루프와 관련된 사례에 대해 NRVO가 사용하도록 설정됩니다.
    • 사용자가 옵션을 /std:c++20/permissive-전달하는 경우에도 /Od NRVO를 사용할 수 있습니다./Zc:nrvo
    • 이제 옵션으로 NRVO를 /Zc: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++ 기능

버전 17.3의 Visual Studio에서 새로운 기능 및 버그 수정에 대한 요약은 Visual Studio 2022 버전 17.3 릴리스 정보C++ 개선 사항을 참조하세요.

  • 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++ 기능

버전 17.2의 Visual Studio에서 새로운 기능 및 버그 수정에 대한 요약은 Visual Studio 2022 버전 17.1 릴리스 정보를 참조하세요.

  • 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++ 기능

버전 17.1의 Visual Studio에서 새로운 기능 및 버그 수정에 대한 요약은 Visual Studio 2022 버전 17.1 릴리스 정보를 참조하세요.

  • 를 사용하여 원격 macOS 시스템에서 CMake 프로젝트를 구성하고 빌드하기 위해 새 사전 설정 구성 템플릿이 CMakePresets.json추가됩니다. 원격 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 통합을 활성화하라는 메시지가 표시됩니다.
  • Windows Embedded 레지스터 디버그>>를 통해 사용할 수 있는 마이크로 컨트롤러 및 RTOS(실시간 운영 체제) 개체에서 주변 장치 레지스터를 검사하고 상호 작용할 수 있는 새로운 보기
  • 디버그>Windows>RTOS 개체를 통해 사용할 수 있는 RTOS 프로젝트에 대한 새 스레드 뷰가 추가되었습니다. 자세한 내용은 Visual Studio의 Embedded Software Development를 참조 하세요.

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

Visual Studio에서 새로운 기능 및 버그 수정에 대한 요약은 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++ 버전의 릴리스 정보도 제공됩니다. Visual Studio 2019의 새로운 C++ 기능에 대한 자세한 내용은 Visual Studio 2019의 새로운 C++ 기능을 참조하세요. Visual Studio 2017의 새로운 C++ 기능에 대한 자세한 내용은 Visual Studio 2017의 새로운 C++ 기능을 참조하세요. 이전 버전의 새로운 기능에 대한 자세한 내용은 Visual C++ 2003~2015의 새로운 기능을 참조하세요.

알려진 문제

C++ IntelliSense

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

피드백 및 제안

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

블로그

Microsoft 개발자 블로그 사이트에서 사용할 수 있는 인사이트 및 권장 사항을 활용하여 모든 새 릴리스를 최신 상태로 유지합니다. 블로그에는 다양한 기능에 대한 심층적인 게시물이 제공됩니다. C++ 팀 블로그Visual Studio 블로그는 특히 관심이 있습니다.