Yang baru untuk C++ di Visual Studio 2022

Visual Studio 2022 menghadirkan banyak pembaruan dan perbaikan untuk pengkompilasi dan alat Microsoft C++. Visual Studio IDE juga menawarkan peningkatan performa serta produktivitas yang signifikan, dan sekarang beroperasi secara spesifik sebagai aplikasi 64-bit.

Apa yang baru untuk C++ di Visual Studio versi 17.9

Secara singkat, beberapa fitur baru adalah:

  • #include diagnostik, yang menyediakan analisis terperinci tentang arahan Anda #include . Aktifkan fitur ini dengan mengklik #include kanan dan memilih arahan >#include Aktifkan diagnostik direktif #include. Di atas masing-masing #include adalah berapa kali kode Anda mereferensikan file tersebut #include . Klik tautan referensi untuk menavigasi ke tempat kode Anda menggunakan sesuatu dari file header tersebut. Untuk melihat waktu build arahan Anda #include , jalankan Build Insights dengan menavigasi ke Build>Run Build Insights on Solution>Build.

    Screenshot of #include diagnostics

    Di atas # include adalah tautan **referensi** dan sejumlah referensi ke # ini sertakan file (dalam hal ini 1). Waktu build juga tercantum (dalam hal ini kurang dari 1/2 detik).

  • Visualisasi tata letak memori, yang menunjukkan bagaimana memori diatur untuk kelas, struktur, dan serikat Anda. Arahkan mouse ke atas jenis dan pilih tautan Tata Letak Memori di Info Cepat untuk membuka jendela khusus yang menampilkan tata letak memori dari jenis yang dipilih. Mengarahkan mouse ke atas jenis data individual dalam jendela ini memberikan informasi terperinci tentang ukuran dan offsetnya dalam jenis.

    Screenshot of the memory layout window

    Jendela tata letak memori menunjukkan konten kelas Ular. Ini menunjukkan offset memori dari berbagai bidang kelas seperti kelas Point untuk lokasi kepala dan isi, skor, dan sebagainya.

  • Anda sekarang dapat menentukan executable CMake kustom Anda sendiri. Fitur ini berguna jika Anda ingin menggunakan versi CMake tertentu yang tidak dikirimkan dengan Visual Studio. Navigasi ke Opsi Alat>dan pilih CMake>General. Pilih Aktifkan CMake kustom yang dapat dieksekusi dan tentukan jalur direktori CMake Anda yang dapat dieksekusi.

    Screenshot of the CMake options dialog

    Dialog opsi CMake dengan opsi "Aktifkan CMake kustom yang dapat dieksekusi" dan bidang "CMake Executable Directory" disorot.

  • IntelliSense yang ditingkatkan untuk proyek Unreal Engine.
  • Dukungan C++23 yang disempurnakan: dan std::span, , , dan set_debug_format() sebagai bagian dari rentang<mdspan> Pemformatan P2286R8 per P0009R18 dan perubahan kata berikutnya yang diterapkan ke Standar C++23. format_kindrange_formatformattablestd::format Selain itu, format() dapat memformat penunjuk per P2510R3.

Untuk ringkasan pembaruan backend C++, lihat Pembaruan Backend MSVC sejak Visual Studio 2022 versi 17.3.

Untuk ringkasan fitur baru di IDE Visual Studio 17.9, lihat Catatan Rilis Visual Studio 2022 versi 17.9.

Apa yang baru untuk C++ di Visual Studio versi 17.8

Secara singkat, beberapa fitur baru adalah:

  • Diagnostik terstruktur C++ di jendela Output dan jendela detail masalah baru yang menyediakan informasi selengkapnya tentang kesalahan tersebut. Untuk informasi selengkapnya, lihat Output SARIF Terstruktur dan Jendela Detail Masalah.
  • Fitur yang memungkinkan Anda memvisualisasikan ukuran dan penyelarasan kelas, struktur, serikat, jenis dasar, atau enum bahkan sebelum kode dikompilasi. Arahkan mouse ke atas pengidentifikasi dan Info Cepat menampilkan informasi ukuran dan perataan.
  • Fitur yang menunjukkan kapan harus menandai fungsi const anggota karena tidak mengubah status objek. Arahkan mouse ke atas fungsi anggota dan klik ikon bola lampu untuk menandai fungsi sebagai const.
  • Visual Studio sekarang meminta Anda untuk menandai fungsi global sebagai statis melalui ikon obeng yang muncul dengan nama fungsi. Klik ikon obeng untuk menandai fungsi sebagai statis.
  • Arahan #include yang tidak digunakan diredupkan di editor. Anda dapat mengarahkan mouse ke atas diredupkan sertakan dan menggunakan menu bola lampu untuk menghapus yang menyertakan atau semua yang tidak digunakan termasuk. Anda juga dapat menambahkan #include arahan untuk entitas yang secara tidak langsung disertakan melalui header lain. Untuk informasi selengkapnya, lihat Membersihkan C/C++ yang disertakan di Visual Studio.
  • Dukungan Mesin Yang Lebih Tidak Nyata:
    • Adaptor Uji Mesin Tidak Nyata memungkinkan Anda menemukan, menjalankan, mengelola, dan men-debug pengujian Unreal Engine Anda tanpa meninggalkan IDE Visual Studio.
    • Dengan Cuplikan Kode Mesin Tidak Nyata, Anda dapat menemukan konstruksi Unreal Engine umum sebagai cuplikan dalam daftar anggota Anda.
    • Build Insights sekarang terintegrasi dengan Visual Studio 2022 dan berfungsi dengan proyek MSBuild dan CMake menggunakan MSVC. Anda sekarang dapat melihat informasi tambahan tentang kompilasi fungsi seperti berapa lama waktu yang diperlukan untuk mengkompilasi dan jumlah ForceInlines.
  • Dukungan pengujian unit Linux jarak jauh sekarang memungkinkan Anda menjalankan pengujian CTest dan GTest pada komputer Linux jarak jauh Anda dari Test Explorer Visual Studio, sama seperti pengujian lokal Anda.

Untuk ringkasan komprehensif fitur C++ baru di Visual Studio 17.8, lihat Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.8.

Untuk ringkasan fitur baru di IDE Visual Studio 17.8, lihat Catatan Rilis Visual Studio 2022 versi 17.8.

Apa yang baru untuk C++ di Visual Studio versi 17.7

Untuk ringkasan fitur C++ baru di Visual Studio 17.7, lihat Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.7.

Secara singkat, beberapa fitur baru adalah:

  • Sesi penelusuran kesalahan yang lebih cepat dan waktu pemuatan proyek yang lebih cepat
  • Visualisasi langkah demi langkah ekspansi makro
  • Unduh satu klik untuk Subsistem Windows untuk Linux (WSL)
  • Dukungan yang ditingkatkan untuk komentar Doxygen
  • C++ Build Insights untuk pengembangan game
  • Ditambahkan /std:clatest untuk pengkompilasi C.
  • Peningkatan proyek Unreal Engine seperti IntelliSense dan pewarnaan sintaks yang lebih cepat, kemampuan untuk menemukan semua referensi Unreal Engine Blueprint, dan banyak lagi.

Untuk ringkasan fitur C++ baru yang khusus untuk pengembangan game, lihat Melepaskan Kekuatan Visual Studio 2022 untuk Pengembangan Game C++

Untuk ringkasan fitur baru di IDE Visual Studio 17.7, lihat Catatan Rilis Visual Studio 2022 versi 17.7.

Apa yang baru untuk C++ di Visual Studio versi 17.6

Untuk ringkasan fitur C++ baru di Visual Studio 17.6, lihat Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.6.

Secara singkat, beberapa fitur baru adalah: penelusuran kesalahan skrip CMake, dukungan bawaan untuk Bahasa Bayangan Tingkat Tinggi (HLSL), penampil Log Mesin Tidak Nyata, dukungan awal untuk C++20 dalam proyek C++/CLI, VCPKG sekarang ditambahkan secara default, dan beberapa fitur pustaka standar C++23 untuk rentang. Untuk melihat daftar lengkap fitur baru yang ditambahkan ke pustaka standar, lihat log perubahan STL.

Untuk ringkasan fitur baru di Visual Studio 17.6 IDE, lihat Catatan Rilis Visual Studio 2022 versi 17.6.

Apa yang baru untuk C++ di Visual Studio versi 17.5

Untuk ringkasan fitur C++ baru di Visual Studio di versi 17.5, lihat Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.5. Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio IDE versi 17.5, lihat Catatan Rilis Visual Studio 2022 versi 17.5.

  • std::move, , std::forwardstd::move_if_noexcept, dan std::forward_like sekarang tidak menghasilkan panggilan fungsi dalam kode yang dihasilkan, bahkan dalam mode debug. Perubahan ini menghindari cast bernama yang menyebabkan overhead yang tidak perlu dalam build debug. /permissive- (atau opsi yang menyiratkannya, seperti /std:c++20 atau std:c++latest) diperlukan.

  • Ditambahkan [[msvc::intrinsic]] untuk mendukung item di atas. Anda dapat menerapkan atribut ini ke fungsi nonrekursif yang terdiri dari satu cast, yang hanya mengambil satu parameter.

  • Menambahkan dukungan untuk Konsol Linux di Terminal Terintegrasi, yang memungkinkan I/O terminal.

  • Menambahkan dukungan eksperimental awal untuk primitif atom C11 (<stdatomic.h>). Anda dapat mengaktifkan fitur eksperimental ini dengan /experimental:c11atomics opsi dalam /std:c11 mode atau yang lebih baru.

  • Menambahkan serangkaian pemeriksaan keyakinan tinggi eksperimental baru ke Pemeriksa Masa Pakai untuk mengurangi kebisingan.

  • Fitur pratinjau baru, Remote File Explorer, memungkinkan Anda melihat direktori file di komputer jarak jauh Anda dalam VS, dan mengunggah dan mengunduh file ke dalamnya.

  • Penerapan versi CMake yang diubah yang dikirim dengan Visual Studio agar sesuai dengan versi Kitware.

  • Menambahkan dukungan untuk Hot Reload ke templat Proyek CMake.

  • Buka Definisi untuk C++ sekarang menggunakan indikator operasi yang lebih halang membutuhkan lebih banyak waktu, menggantikan dialog modal dari versi sebelumnya.

  • Memulai peluncuran eksperimen yang memberikan hasil yang lebih cerdas dalam daftar pelengkapan otomatis dan anggota C++. Fungsionalitas ini sebelumnya dikenal sebagai Predictive IntelliSense tetapi sekarang menggunakan metode presentasi baru.

  • Kami sekarang mengirim toolset Arm64 Clang asli dengan beban kerja LLVM kami, memungkinkan kompilasi asli pada mesin Arm64.

  • Menambahkan pelokalan ke Ekstensi Image Watch (Ekstensi ini tersedia di Marketplace, dan tidak dibundel melalui Alat Penginstal Visual Studio).

  • Menambahkan dukungan untuk membuka jendela Terminal ke dalam Kontainer Pengembang yang sedang berjalan.

  • Melakukan beberapa peningkatan pada ekspansi makro IntelliSense. Terutama, kami mengaktifkan ekspansi rekursif dalam konteks yang lebih banyak, dan kami menambahkan opsi ke pop up untuk menyalin ekspansi ke clipboard atau memperluas makro sebaris.

  • Pemantauan bersamaan sekarang didukung di Serial Monitor. Pemantauan bersamaan memungkinkan Anda memantau beberapa port secara bersamaan. Tekan tombol plus untuk membuka Serial Monitor lain dan memulai.

  • Anda sekarang dapat melihat properti dari kelas dasar yang dimodifikasi dalam aset Unreal Blueprint tanpa meninggalkan Visual Studio. Klik dua kali dalam referensi Cetak Biru untuk kelas atau properti C++ untuk membuka Pemeriksa Aset UE di Visual Studio.

  • Mengaktifkan menjalankan DevContainers pada komputer Linux jarak jauh.

  • Mengaktifkan pilihan beberapa target untuk dibangun dalam tampilan Target CMake.

  • Menambahkan dukungan untuk CMakePresets.json versi 5. Lihat dokumentasi CMake untuk informasi fitur baru.

  • Mengaktifkan Test Explorer untuk membangun dan menguji beberapa target CMake secara paralel.

  • Menambahkan opsi "Buka kontainer di terminal" ke Kontainer Dev.

  • Fitur pustaka standar yang diimplementasikan:

    • basic_format_stringP2508R1, format_string,wformat_string
    • ranges::fold_leftP2322R6, ranges::fold_right, dan sebagainya.
    • views::zip P2321R2 (tidak termasuk zip_transform, , adjacentdan adjacent_transform)

Apa yang baru untuk C++ di Visual Studio versi 17.4

Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio di versi 17.4, lihat Catatan Rilis Visual Studio 2022 versi 17.4 dan Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.4.

  • Pesan kesalahan kompilator yang ditingkatkan untuk memberikan informasi yang lebih benar dan berguna, terutama untuk konsep.

  • Menambahkan opsi /experimental:log<directory> MSVC eksperimental untuk menghasilkan diagnostik SARIF terstruktur ke direktori yang ditentukan.

  • Menambahkan dukungan untuk atribut C23 ke IntelliSense dan melanjutkan kemajuan dalam dukungan modul C++20.

  • Peningkatan performa pengindeksan saat membuka solusi baru. Proyek besar dapat melihat peningkatan 20-35% dari 17,3.

  • Peningkatan Pengoptimalan Nilai Pengembalian Bernama (NRVO):

    • NRVO diaktifkan untuk kasus yang melibatkan penanganan pengecualian atau perulangan.
    • NRVO diaktifkan bahkan di bawah /Od jika pengguna meneruskan /Zc:nrvo opsi, atau /std:c++20 lebih baru, atau /permissive-.
    • Anda sekarang dapat menonaktifkan NRVO dengan /Zc:nrvo- opsi .
  • Meningkatkan versi LLVM yang dikirim dengan Visual Studio ke 15.0.1. Untuk informasi selengkapnya tentang apa yang tersedia, lihat catatan rilis LLVM dan Clang .

  • Menambahkan dukungan ke Visual Studio untuk artefak vcpkg dengan proyek CMake. Untuk proyek yang menyertakan manifes vcpkg, lingkungan diaktifkan secara otomatis pada proyek terbuka. Pelajari selengkapnya tentang fitur ini di aktivasi lingkungan vcpkg di posting blog Visual Studio .

  • Sekarang Anda dapat menggunakan Kontainer Dev untuk proyek C++Anda. Pelajari selengkapnya tentang fitur ini di posting blog Dev Containers for C++kami.

  • IntelliSense sekarang menghormati urutan header yang telah diklasifikasikan sebelumnya ketika salah satunya adalah PCH. Sebelumnya, ketika PCH digunakan melalui /Yu dan disertakan secara paksa melalui /FI, IntelliSense akan selalu memprosesnya terlebih dahulu, sebelum header lain yang disertakan melalui /FI. Perilaku ini tidak cocok dengan perilaku build. Dengan perubahan ini, /FI header diproses dalam urutan yang ditentukan.

  • Menghapus awalan internal dari nama CTest di Test Explorer.

  • Memperbarui versi CMake yang dikirim dengan Visual Studio ke versi 3.24.1. Untuk detail tentang apa yang tersedia, lihat catatan rilis CMake.

  • Pembaruan Android SDK:

    • Skrip semut dihapus, sehingga pengguna tidak lagi melihat templat berbasis Ant dalam dialog Proyek Baru. Untuk bantuan bermigrasi dari templat Ant ke templat Gradle, lihat Memigrasikan Build Dari Apache Ant
    • Menambahkan dukungan untuk membangun dengan NDK 23 dan 24
    • Komponen NDK yang diperbarui ke LTS versi 23
  • Menambahkan implementasi vektorisasi dari ranges::min_element(), , ranges::max_element()dan ranges::minmax_element()

  • Kami terus melacak perkembangan terbaru dalam standardisasi C++. Dukungan untuk fitur C++23 ini tersedia dengan menyertakan /std:c++latest dalam opsi pengkompilasi Anda:

    • ranges::containsP2302R4,ranges::contains_subrange

    • string_view Konstruktor Rentang P2499R0 Harusexplicit

    • auto(x)P0849R8: decay-copy Dalam Bahasa

      (Bagian pengkompilasi belum diimplementasikan. Bagian pustaka diimplementasikan dalam mode C++20 ketika dukungan Rentang awalnya diterapkan.)

    • P0881R7<stacktrace>

    • P2301R1 Tambahkan pmr Alias Untukstd::stacktrace

    • P1328R1constexpr type_info::operator==()

    • ranges::iotaP2440R1, ranges::shift_left,ranges::shift_right

    • P2441R2views::join_with

  • Menambahkan opsi "Navigasi setelah Buat Deklarasi/Definisi" untuk memungkinkan Anda memilih perilaku navigasi fitur Buat Deklarasi/Definisi. Anda dapat memilih antara mengintip (default) atau membuka dokumen, atau tanpa navigasi.

  • Build Arm64 dari Visual Studio sekarang menggabungkan CMake dan Ninja versi Arm64.

  • Menambahkan dukungan untuk CMake Presets versi 4. Untuk detail tentang apa yang tersedia, lihat catatan rilis CMake.

  • Koneksi sistem jarak jauh menggunakan Pengelola Sambungan sekarang mendukung SSH ProxyJump. ProxyJump digunakan untuk mengakses host SSH melalui host SSH lain (misalnya, untuk mengakses host di belakang firewall).

Apa yang baru untuk C++ di Visual Studio versi 17.3

Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio di versi 17.3, lihat Visual Studio 2022 versi 17.3 Catatan Rilis dan peningkatan C++.

  • Toolchain Arm64EC tidak lagi ditandai sebagai eksperimental dan siap untuk penggunaan produksi.

  • Terminal Visual Studio sekarang dapat digunakan sebagai klien SSH dengan koneksi SSH tersimpan Anda. Dengan C++ untuk Alat Linux terinstal, buka jendela alat Terminal. Dropdown Terminal diisi dengan koneksi tersimpan Anda. Saat Anda memilih koneksi, jendela Terminal baru terbuka di dalam Visual Studio yang menampilkan terminal pseudo pada sistem jarak jauh Anda. Karakter kontrol, warna, dan kesadaran posisi kursor semuanya didukung.

  • Visual Studio sekarang dapat menambahkan templat kelas Unreal Engine untuk proyek UE Anda. Untuk mencoba fitur ini, pastikan dukungan IDE untuk Unreal Engine dipilih dalam pengembangan Game dengan beban kerja C++ di Alat Penginstal Visual Studio. Saat Anda mengerjakan proyek UE, klik kanan proyek atau folder/filter dan pilih Tambahkan>Kelas UE.

  • Buka Definisi sekarang mengingat tanda tangan sebelumnya dan menavigasi sesuai ketika kecocokan yang lebih baik tidak tersedia (misalnya, setelah Anda mengubah tanda tangan salah satu pasangan secara manual). Responsivitas Go To All ditingkatkan. Sebelumnya, hasil muncul setelah Anda berhenti mengetik. Dalam pengalaman baru, hasil ditampilkan saat Anda mengetik.

  • Dalam konteks yang memerlukan enum penyelesaian jenis (misalnya, penugasan ke enum variabel, label kasus, jenis pengembalian enum , dan sebagainya), daftar pelengkapan otomatis sekarang difilter hanya ke enumerator yang cocok dan konstruksi terkait.

  • Menambahkan dukungan NuGet PackageReference untuk proyek C++/CLI MSBuild yang menargetkan .NET Core. Perubahan ini dilakukan untuk membuka blokir basis kode campuran agar tidak dapat mengadopsi .NET Core. Dukungan ini tidak berfungsi untuk jenis proyek C++ lainnya atau jenis proyek C++ apa pun yang menargetkan .NET Framework. Tidak ada rencana untuk memperluas dukungan PackageReference ke skenario C++ lainnya. Tim sedang mengerjakan pengalaman terpisah yang melibatkan vcpkg untuk skenario non-MSBuild dan untuk menambahkan fungsionalitas yang lebih besar.

  • Menambahkan jendela Serial Monitor untuk pengembangan yang disematkan, tersedia melalui Debug>Windows>Serial Monitor.

  • Peningkatan pengindeksan C++ sebesar ~66% dibandingkan dengan 17,2.

  • Memperbarui versi CMake yang dikirim dengan Visual Studio ke versi 3.23. Lihat catatan rilis CMake 3.23 untuk detail tentang apa yang tersedia.

  • Meningkatkan versi alat LLVM yang dikirim dengan Visual Studio ke v14. Untuk detail tentang apa yang tersedia, lihat catatan rilis LLVM dan Clang .

  • Memperbarui Dev 16.11 C++ Toolset berdampingan ke versi 14.29.30145.00. Versi terbaru Dev 16.11 C++ Toolset berisi perbaikan bug penting, termasuk memperbaiki semua laporan cacat C++20 yang tersisa. Untuk informasi selengkapnya tentang perbaikan bug, termasuk laporan cacat C++20 di Dev 16.11, lihat Catatan rilis Visual Studio 2019 versi 16.11.14.

  • Melakukan berbagai peningkatan pada pengalaman dalam editor modul C++. Kami terus berupaya meningkatkan kualitas pengalaman tetapi mendorong Anda untuk mencobanya di 17.3. Laporkan masalah yang tersisa melalui Komunitas Pengembang.

Apa yang baru untuk C++ di Visual Studio versi 17.2

Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio di versi 17.2, lihat Catatan Rilis Visual Studio 2022 versi 17.1.

  • Menambahkan dukungan pengompilasi untuk fitur C++23 yang menyimpulkan this, tersedia di bagian opsi /std:c++latest.

  • Menambahkan dukungan IntelliSense untuk fitur C++23 menyimpulkan this dan if consteval.

  • Menambahkan nama parameter sebaris dan mengetik dukungan petunjuk, beralih dengan menekan Alt+F1 atau mengetuk dua kali Ctrl. Perilaku ini dapat disesuaikan pada Alat > Opsi > Editor Teks > C/C++ > IntelliSense.

  • Menambahkan dukungan eksperimental untuk modul C++20 dalam proyek CMake. Dukungan ini saat ini hanya tersedia dengan generator Visual Studio (MSBuild).

  • Pada 17.1, kami memperkenalkan daftar periferal dan tampilan RTOS untuk pengembang yang disematkan. Kami terus meningkatkan kemampuan tampilan tersebut dengan peningkatan kegunaan di 17.2:

    • Jendela alat RTOS sekarang disembunyikan secara default. Ini mencegah menampilkan jendela alat dengan pesan kesalahan yang tidak relevan saat Anda tidak menggunakan RTOS.
    • Saat Anda mengeklik dua kali objek RTOS di jendela alat, objek menambahkan pengawasan untuk objek tersebut.
    • Saat Anda memilih nilai awal dan akhir untuk penunjuk tumpukan di jendela alat RTOS, nilai tersebut akan terbuka di jendela memori.
    • Menambahkan kesadaran utas untuk target perangkat ke jendela tumpukan panggilan.
    • Pengguna sekarang dapat memilih ikon sematkan di samping periferal, daftar, atau bidang untuk menyematkannya di bagian atas Tampilan Periferal.
  • Menambahkan implementasi laporan cacat C++20 yang tersisa (juga dikenal sebagai backport). Semua fitur C++20 sekarang tersedia di bagian opsi /std:c++20. Untuk informasi selengkapnya tentang backport yang diterapkan, lihat proyek Laporan Cacat C++20 di repositori Microsoft/STL GitHub dan entri blog MSVC's STL Completes /std:c++20.

  • Kami menambahkan berbagai fitur Pustaka C++23, tersedia di bagian opsi /std:c++latest. Untuk informasi selengkapnya tentang fitur baru, lihat changelog Repositori STL.

  • Peningkatan performa pengindeksan C++ awal hingga 20%, tergantung kedalaman grafik yang disertakan.

Yang baru untuk C++ di Visual Studio versi 17.1

Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio di versi 17.1, lihat Catatan Rilis Visual Studio 2022 versi 17.1.

  • Templat Konfigurasi Preset baru ditambahkan untuk mengonfigurasi dan membangun proyek CMake pada sistem macOS jarak jauh dengan CMakePresets.json. Anda juga bisa meluncurkan target CMake pada sistem macOS jarak jauh, lalu menelusuri kesalahan dari jarak jauh di debugger Visual Studio yang didukung oleh GDB atau LLDB.
  • Anda sekarang bisa menelusuri kesalahan cadangan inti pada sistem macOS jarak jauh dari Visual Studio dengan LLDB atau GDB.
  • Versi Clang dan LLVM yang dikirim dengan Visual Studio ditingkatkan ke v13.
  • Integrasi CMake Visual Studio hanya aktif saat sebuah CMakeLists.txt diidentifikasi di akar ruang kerja terbuka. CMakeLists.txt Jika diidentifikasi di tingkat ruang kerja lain, maka Anda diminta untuk mengaktifkan integrasi CMake Visual Studio dengan pemberitahuan.
  • Tampilan baru yang memungkinkan Anda memeriksa dan berinteraksi dengan register periferal pada objek mikrokontroler dan sistem operasi real time (RTOS), tersedia melalui Debug>Windows>Embedded Registers
  • Menambahkan sebuah tampilan utas baru untuk proyek RTOS, tersedia melalui Debug>Windows>RTOS Objects. Untuk informasi selengkapnya, lihat Pengembangan Perangkat Lunak yang Disematkan di Visual Studio.

Yang baru untuk C++ di Visual Studio versi 17.0

Untuk ringkasan fitur baru dan perbaikan bug di Visual Studio, lihat Catatan Rilis Visual Studio 2022 versi 17.0.

  • Visual Studio IDE, devenv.exe, sekarang menjadi aplikasi 64-bit khusus.

  • Toolset MSVC sekarang default ke hashing sumber SHA-256 di rekaman penelusuran kesalahan. Sebelumnya, toolset memakai MD5 untuk hashing sumber secara default.

  • Alat pembangunan v143 sekarang tersedia melalui alat penginstal Visual Studio dan di alat pembangunan mandiri.

Hot Reload untuk C++ asli

  • Hot Reload untuk C++ memungkinkan pembuatan banyak jenis pengeditan kode ke aplikasi yang sedang berjalan dan menerapkannya tanpa perlu menjeda eksekusi aplikasi dengan sesuatu misalnya titik henti.

Pada Visual Studio 2022, saat memulai aplikasi di debugger, Anda dapat menggunakan tombol Hot Reload untuk memodifikasi aplikasi saat masih berjalan. Pengalaman ini didukung oleh Edit serta Lanjutkan khusus. Untuk informasi selengkapnya mengenai pengeditan yang didukung, lihat Edit dan Lanjutkan (C++).

  • Hot Reload mendukung proyek CMake serta Open Folder.

Dukungan WSL2

  • Anda sekarang bisa membangun dan men-debug secara khusus di WSL2 tanpa membuat koneksi SSH. Proyek CMake lintas platform serta proyek Linux berbasis MSBuild didukung.

Dukungan CMake yang disempurnakan

  • Meningkatkan versi CMake yang dikirim dengan Visual Studio ke versi 3.21. Untuk informasi selengkapnya tentang apa yang tersedia dalam versi ini, lihat catatan rilis CMake 3.21.

  • Halaman Gambaran Umum CMake diperbarui untuk mendukung CMakePresets.json.

  • Anda sekarang bisa mengonfigurasi serta membangun proyek CMake Anda dengan CMake 3.21 dan CMakePresets.json v3.

  • Visual Studio sekarang mendukung opsi buildPresets.targets di CMakePresets.json. Opsi ini memungkinkan Anda untuk membangun subset target di proyek CMake Anda.

  • Menu Proyek dalam proyek CMake disederhanakan dan mengekspos opsi ke "Hapus Cache dan Konfigurasi Ulang" dan "Lihat Cache."

  • Menerapkan opsi pengkompilasi untuk mencantumkan /scanDependencies dependensi modul C++20 untuk proyek CMake, seperti yang dijelaskan dalam P1689R5. Ini adalah langkah menuju dukungan untuk pembangunan proyek berbasis modul dengan CMake dan kami berupaya untuk menyelesaikan dukungan ini dalam rilis selanjutnya.

Peningkatan Pustaka Standar

Pilih Peningkatan Pustaka Standar (STL) disorot di sini. Untuk daftar lengkap fungsionalitas baru, perubahan, perbaikan bug, serta peningkatan performa, lihat Changelog tim STL.

  • Menambahkan visualizer penelusuran kesalahan untuk meningkatkan bagaimana jenis berikut ditampilkan: source_location, bind_front(), u8string(dan iteratornya), default_sentinel_t, unreachable_sentinel_t. ranges::empty_view, ranges::single_view, ranges::iota_view (dan iterator/sentinelnya), ranges::ref_view, thread, thread::id, jthread, danfilesystem::path
  • Menambahkan [[nodiscard]] ke keluarga fungsi stoi() di <string> dan ke berbagai fungsi di <locale> seperti fungsi anggota collate, has_facet(), dan keluarga isalnum() serta tolower().
  • P0980R1 Dibuat std::stringconstexpr di VS 2019 16.10. Sekarang didukung untuk Clang.
  • P1004R2 Dibuat std::vectorconstexprdi VS 2019 16.10. Sekarang didukung untuk Clang.

Fitur C++23 yang disorot

  • P1048R1 Ditambahkan is_scoped_enum, sifat baru untuk pustaka Standar C++, yang mendeteksi apakah suatu jenis adalah enumerasi yang tercakup.
  • P1132R7out_ptr(), inout_ptr()
  • P1679R3contains() Untuk basic_string serta basic_string_view
  • P1682R3to_underlying() untuk enumerasi
  • P2162R2 Izinkan pewarisan dari std::variant
  • P2166R1 Melarang pembangunanbasic_string dan basic_string_view dari nullptr. Perubahan ini adalah perubahan pemecah sumber. Kode yang sebelumnya mempunyai perilaku yang tidak terdefinisi saat runtime sekarang ditolak dengan kesalahan penyusun.
  • P2186R2 Menghapus dukungan pengumpulan sampah. Perubahan ini menghapus declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safety. Sebelumnya, fungsi-fungsi ini tidak berpengaruh.

Peningkatan performa yang disorot

  • <format> sekarang mendeteksi kapan penulisan dilakukan ke back_insert_iterator untuk basic_string atau vector, dan melakukan panggilan insert() yang lebih cepat ke di end() dari kontainer.
  • Kami meningkatkan performa std::find() dan std::count() untuk vector<bool> 19x serta 26x (kali, bukan persen).
  • Kami meningkatkan performa std::count() untuk vector<bool>
  • std::byte sekarang mempunyai performa yang sama seperti unsigned char dalam reverse() dan variant::swap()

Dukungan Clang serta LLVM

  • Alat LLVM yang dikirim dengan Visual Studio ditingkatkan ke LLVM 12. Untuk informasi selengkapnya, lihat rekaman rilis LLVM.

  • Dukungan Clang-cl diperbarui ke LLVM 12.

  • Sekarang Anda bisa menelusuri kesalahan proses yang berjalan pada sistem jarak jauh dari Visual Studio dengan menggunakan LLDB.

C++ AMP tidak digunakan lagi

  • Header C++ AMP sekarang tidak digunakan lagi. Termasuk <amp.h> dalam proyek C++ menghasilkan kesalahan pembangunan. Untuk menghilangkan kesalahan, tentukan _SILENCE_AMP_DEPRECATION_WARNINGS. Untuk informasi selengkapnya, lihat tautan Penghentian AMP kami.

Penyempurnaan IntelliSense

  • Kami melakukan penyempurnaan di C++ IntelliSense saat memberikan penyorotan navigasi serta sintaks untuk jenis dari Modul dan Unit Header yang diimpor. IntelliSense merupakan area aktif investasi bagi kami. Bantu kami meningkatkan: Bagikan umpan balik Anda mengenai Komunitas Pengembang dengan menggunakan Bantuan>Kirim Umpan Balik.

  • Kami meningkatkan performa C++ IntelliSense dengan mengoptimalkan penggunaan header dalam cache serta akses database simbol, sehingga waktu pemuatan untuk masuk ke kode Anda menjadi lebih baik.

  • Linter Kode IntelliSense untuk C++ sekarang aktif secara default, memberikan saran instan ketika Anda mengetik dan memperbaiki saran untuk cacat kode umum.

  • C++ IntelliSense untuk proyek CMake sekarang berfungsi saat menggunakan preset dengan sebuah nama tampilan.

Pembaruan Beban Kerja C++

  • Diperbarui ke NDK r21 LTS dalam beban kerja Pengembangan Seluler C++.

  • Pengembangan Game dengan beban kerja C++ sekarang menginstal Mesin Unreal terbaru dengan dukungan untuk Visual Studio 2022.

Peningkatan analisis kode

  • Analisis kode sekarang memberlakukan bahwa nilai pengembalian fungsi yang dianotasi dengan _Check_return_ atau _Must_inspect_result_ harus diperiksa.

  • Deteksi dereferensi pointer null ditingkatkan dalam alat analisis kode kami.

  • Dukungan tambahan untuk gsl::not_null ke analisis kode.

  • Dukungan untuk Libfuzzer di bawah opsi penyusunan/fsanitize=fuzzer.

Catatan rilis untuk versi yang lebih lama

Catatan rilis untuk versi C++ yang lebih lama juga tersedia. Untuk informasi yang baru untuk C++ di Visual Studio 2019, lihat Yang baru untuk C++ di Visual Studio 2019. Untuk informasi tentang apa yang baru untuk C++ di Visual Studio 2017, lihat Apa yang baru untuk C++ di Visual Studio 2017. Untuk informasi tentang apa yang baru dalam versi sebelumnya, lihat Visual C++ Apa yang Baru 2003 hingga 2015.

Masalah umum

C++ IntelliSense

Untuk informasi selengkapnya mengenai masalah terbuka lainnya serta solusi yang tersedia untuk C++ di Visual Studio 2022, lihat daftar masalah Komunitas Pengembang C++.

Umpan balik dan saran

Kami ingin mendengar pendapat Anda! Anda bisa Melaporkan Masalah atau Menyarankan Fitur dengan menggunakan ikon Kirim Umpan Balik di sudut kanan atas penginstal atau Visual Studio IDE, atau dari Bantuan>Kirim Umpan Balik. Anda bisa melacak masalah dengan menggunakan Visual Studio Developer Community, tempat Anda menambahkan komentar atau mencari solusi. Anda juga bisa mendapatkan bantuan pemasangan gratis melalui dukungan Live Chat kami.

Blog

Manfaatkan wawasan dan rekomendasi yang tersedia di situs Blog Pengembang Microsoft untuk tetap mendapatkan informasi terbaru tentang semua rilis baru. Blog ini mencakup posting penyelaman mendalam di berbagai fitur. Blog Tim C++ dan Blog Visual Studio sangat menarik.