다음을 통해 공유


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

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

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

릴리스 날짜: 2024년 11월

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

새로운 기능 중 일부를 빠르게 강조 표시합니다.

  • 표준 라이브러리 향상된 기능
    • C++23 서식 범위(P2286R8) 구현이 완료되었습니다. 컨테이너 어댑터 및 .에 대한 포맷터가 stackqueuepriority_queue추가되었습니다.
    • 또한 지원하는 <mdspan>다차원 첨자 연산자가 추가되었습니다. 예: print("m[{}, {}]: '{}'; ", i, j, m[i, j])
  • C++의 게임 개발
    • Unreal Engine 프로젝트를 래핑하는 Visual Studio 솔루션 파일을 생성하지 않고도 Visual Studio에서 Unreal Engine 프로젝트를 직접 엽니다. 자세한 내용은 Visual Studio에서 Unreal Engine 프로젝트 작업을 참조 하세요.
    • 도구 모음에서 직접 디버깅할 때 전달할 명령줄 인수를 지정할 수 있습니다. 자세한 내용은 Unreal Engine 프로젝트에 대한 명령줄 인수 설정을 참조 하세요. 명령줄 인수 드롭다운의 스크린샷. -graphicsadaptor=0이라는 명령줄 인수를 포함합니다.
  • Build Insights
    • 선택한 파일에서 Build Insights를 실행할 수 있습니다. 솔루션 탐색기 원하는 파일을 선택하고 마우스 오른쪽 단추를 클릭한 다음 선택한 파일에서 Build Insights 실행을 선택합니다.솔루션 탐색기 파일의 스크린샷. 상황에 맞는 메뉴가 열려 있고 선택한 파일에서 Build Insights를 실행하는 옵션이 강조 표시됩니다.
    • 프로젝트별로 Build Insights 결과를 필터링할 수 있습니다. 필터 열 머리글에서 필터 단추를 클릭하고 결과를 표시할 프로젝트를 선택합니다. 포함된 파일 탭이 열려 있는 Build Insights 창의 스크린샷 필터 단추가 선택되었고 프로젝트 목록이 나타납니다. 두 프로젝트 옆에 있는 확인란이 선택되어 있습니다.
    • Build Insights 창에서 물음표 아이콘을 클릭하면 Build Insights 창의 탭에 대한 간단한 설명과 자세한 설명을 위한 설명서 링크가 표시됩니다. 설명 보기 단추(원의 물음표)가 강조 표시된 Build Insights 창의 스크린샷
  • GitHub Copilot
    • 변수 값 옆에 있는 Copilot 질문을 클릭하여 AI 기반 인사이트를 통해 현재 상태로 전환된 원인을 파악할 수 있습니다. 예를 들어 다음 프로그램에는 루프 조건에 off-by-One 오류가 있습니다.

    자동 창의 스크린샷. 이름이 NULL인 변수입니다. 옆에 있는 부조종사 요청 아이콘이 강조 표시됩니다.

    이 문제를 일으킨 코드는 (auto it = h.animals_.begin(); <= h.animals_.end(); it++)입니다.

    변수에 대한 부조종사 요청 아이콘을 it 클릭하면 변수가 다음과 같은 이유를 <NULL>알 수 있습니다.

    GitHub Copilot 창의 스크린샷.

    이 오류는 int calculate_number_of_cats(const house&h)로 정의된 함수 내에 있습니다. GitHub Copilot 메시지는 다음과 같이 말합니다. "식의 값은 NULL입니다. 즉, 반복기가 벡터 animals_ 유효한 요소를 가리키지 않습니다. 프로그램의 컨텍스트에서 집 개체의 animals_ 벡터를 반복하여 고양이 개체의 수를 계산해야 합니다. Null인 이유입니다. 로컬 및 호출 스택 컨텍스트에 따라: 집 개체 h에는 빈 animals_ 벡터(size=0)가 있습니다. 루프 조건이 <= h.animals_.end()가 올바르지 않습니다. != h.animals_.end()"여야 합니다.

    • Visual Studio 오류 목록에서 부조종사에게 오류에 대한 질문을 클릭하여 오류 및 제안된 수정 사항에 대한 도움말을 볼 수 있습니다. 예시:

    오류 목록 창의 스크린샷.

    unique_ptr 삭제된 함수를 참조하려고 시도하는 오류 옆에 코필로트 요청 아이콘이 강조 표시됩니다.

    코필로트 요청을 클릭하면 오류에 대해 알려줍니다.

    오류에 대한 GitHub Copilot 설명의 스크린샷.

    "범위 기반 for 루프가 std::unique_ptr 개체를 복사하려고 했기 때문에 오류가 발생합니다. std::unique_ptr 복사할 수 없으므로 허용되지 않습니다. 이 문제를 해결하기 위해 std::unique_ptr 개체를 복사하지 않도록 참조를 사용하도록 루프를 변경했습니다. 이렇게 하면 루프가 std::unique_ptr 개체에 대한 참조를 반복합니다.

  • 디버깅
    • move_iterator에 대한 mutexrecursive_mutex새 디버그 시각화 도우미
    • 이제 디버거는 반환 값을 인라인으로 표시합니다. 값 8.25를 보여 주는 도구 설명의 스크린샷 이는 다시 실행된 return 문 다음에 오는 식의 결과입니다.

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

릴리스 날짜: 2024년 8월

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

새 기능의 일부 목록:

  • 표준 라이브러리 향상된 기능

    • 이제 형식이 지정된 출력 구현에는 다음에 대한 std::pair std::tuple포맷터와 포맷터가 포함 std::range_formatter 됩니다.
    • 인수 없이 지원을 std::println() 추가했습니다. 그러면 P3142R0 제안된 빈 줄이 인쇄됩니다.
    • 8비replace_copy()트 및 16비트 요소 ranges::countranges::find_lastfind()ranges::iotacount() mismatch()ranges::findranges::mismatch, , replace_copy_if(),ranges::replace_copy, ranges::replace_copy_iffind_first_of() 및 .ranges::find_first_of
  • C++의 게임 개발

    • 이제 Visual Studio 내에서 일반적인 Unreal Engine 클래스 템플릿, 모듈 및 플러그 인을 추가할 수 있습니다. 자세한 내용은 Visual Studio에서 Unreal Engine 클래스, 모듈 및 플러그 인 추가를 참조하세요.
    • 새로운 Unreal Engine 도구 모음은 Visual Studio 내에서 Unreal Engine 관련 작업에 빠르게 액세스할 수 있도록 합니다. 도구 모음을 사용하면 Unreal Engine 프로세스에 빠르게 연결하고, 청사진 캐시를 다시 검사하고, Unreal Engine 로그에 빠르게 액세스하고, Visual Studio용 Unreal Engine 구성 페이지에 빠르게 액세스할 수 있습니다. 자세한 내용은 Unreal 엔진 도구 모음을 참조 하세요.
    • 이제 프로젝트별로 추적 결과를 필터링할 수 있습니다. 또한 각 행의 결과는 전체 경로 대신 상대 경로 및 파일 이름을 표시합니다. 포함된 파일 보기의 결과 그룹화도 향상되었습니다.

    향상된 포함된 파일 진단 결과의 스크린샷.

    포함된 파일 보기에는 프로젝트에 대한 새 열이 있습니다. 프로젝트 열이 선택되고 (모두 선택), CompilerIdC, OpenAL, common 등과 같은 프로젝트가 선택됩니다. 포함된 파일은 상대 경로 및 파일 이름으로 나열되고 함께 그룹화됩니다.

  • CMake 디버깅

    • 이제 WSL(Linux용 Windows 하위 시스템) 또는 SSH를 통해 Linux를 대상으로 하는 CMake 프로젝트용 Visual Studio 디버거에서 CMake 스크립트 및 CMakeLists.txt 파일을 디버그할 수 있습니다. Visual Studio에서 CMake 디버깅 세션을 시작하려면 파일에서 CMakeLists.txt 중단점을 설정한 다음 CMake 디버깅을 사용하여 프로젝트>구성 캐시로 이동합니다.
  • GitHub Copilot

    • 코드 편집기에서 기호를 마우스로 가리키면 빠른 정보 대화 상자에서 Copilot 입력 추가 단추를 클릭하여 지정된 기호에 대해 자세히 알아봅니다.

    빠른 정보 창의 스크린샷.

    빠른 정보 창이 함수 위에 표시됩니다. 자세한 정보 표시 링크가 강조 표시되어 있습니다.

    • GitHub Copilot는 식별자 사용 방법 및 코드 스타일에 따라 식별자(변수, 메서드 또는 클래스)에 대한 명명 제안을 생성할 수 있습니다.

      GitHub Copilot 이름 바꾸기 대화 상자의 스크린샷.

      이름 바꾸기 대화 상자에는 text_color, font_color, display_color, console_color 및 menu_text_color 선택 항목을 보여 주는 드롭다운 목록이 있는 새 이름 필드가 있습니다.

    활성 GitHub Copilot 구독이 필요합니다. 이름을 바꿀 변수를 마우스 오른쪽 단추로 클릭하고 이름 바꾸기(Ctrl+R, Ctrl+R)를 선택합니다. GitHub 코필로트 스파클 아이콘을 선택하여 명명 제안을 생성합니다.

  • 디버깅

    • C++의 조건부 중단점은 더 빠릅니다.
  • 진단 개선 사항

    • 템플릿 인수에 std::tuple 여러 인스턴스가 있는 인스턴스를 호출 std::get<T>T 때 진단이 향상되었습니다. 보고하는 데 사용되는 MSVC:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      이제 다음을 보고합니다.
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • 요청된 결과를 생성할 수 없는 경우 std::ranges::to 진단이 개선되었습니다. 보고하는 데 사용되는 MSVC:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      이제 다음을 보고합니다.
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

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

2024년 5월 릴리스

에 대한 자세한 내용은 참조
C++ 개발자를 위한 새로운 기능 Visual Studio 2022 17.10의 C++ 개발자를 위한 새로운 기능
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으로 업데이트되었습니다. 이는 버전 가정이 있는 프로젝트에 영향을 미칠 수 있습니다. MSVC 버전이 모두 Visual Studio 2022 릴리스의 경우 19.3X라고 가정하는 프로젝트에 영향을 주는 몇 가지 방법에 대한 자세한 내용은 VS 2022 v17.10의 MSVC 도구 집합 부 버전 번호 14.40을 참조 하세요.
  • 표준 라이브러리 개선 사항: 표준 라이브러리는 P2510R3 서식 지정 포인터에 대한 지원을 추가했습니다. 이 포인터는 정수에 이미 존재하는 포인터에 더 많이 사용할 std::format 때 포인터에 대한 형식 지정자 집합을 제공합니다. 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++ 개발자를 위한 새로운 기능 Visual Studio 2022 17.9의 C++ 개발자를 위한 새로운 기능
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 위에는 **reference** 링크와 이 #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++ 개발자를 위한 새로운 기능 Visual Studio 2022 17.8의 C++ 개발자를 위한 새로운 기능
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++ 개발자를 위한 새로운 기능 Visual Studio 2022 17.7의 C++ 개발자를 위한 새로운 기능
게임 개발과 관련된 새로운 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를 포함하여 제공됩니다.

    • P2302R4 ranges::contains, ranges::contains_subrange

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

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

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

    • P0881R7 <stacktrace>

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

    • P1328R1 constexpr type_info::operator==()

    • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::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++23 및 C++26 기능, 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::string constexpr을 만들었습니다. 이제 Clang이 지원됩니다.
  • P1004R2 VS 2019 16.10에 std::vector constexpr을 만들었습니다. 이제 Clang이 지원됩니다.

눈의 띄는 C++23 기능

  • P1048R1 형식이 범위가 지정된 열거형인지 여부를 검색하는 C++ 표준 라이브러리의 새 특성인 is_scoped_enum을 추가했습니다.
  • P1132R7 out_ptr(), inout_ptr()
  • P1679R3 basic_stringbasic_string_view의 경우 contains()
  • P1682R3 열거형의 경우 to_underlying()
  • P2162R2std::variant에서 상속 허용
  • P2166R1 nullptr에서 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 블로그에 특별히 관심 있는 내용이 있습니다.