Bagikan melalui


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.14

Dirilis Mei 2025

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.14
Standard Library (STL) menggabungkan fitur C++26 dan C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, peningkatan perilaku, dan bug yang diperbaiki STL Changelog 17.14
Fitur baru di IDE Catatan Rilis Visual Studio 2022 versi 17.14
Pembaruan bahasa C++ Pembaruan Bahasa C++ di MSVC di Visual Studio 2022 17.14
Peningkatan kesuaian bahasa C++ Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.14

Sorotan cepat dari beberapa fitur baru:

  • Debugging Dinamis C++ memungkinkan Anda untuk men-debug kode yang dioptimalkan tanpa memengaruhi performa. Untuk informasi selengkapnya, lihat Penelusuran Kesalahan Dinamis C++.

  • Menerapkan fitur C++23 (memerlukan /std:c++latest atau /std:c++23preview):

  • Buat komentar dokumentasi secara otomatis dengan GitHub Copilot. Untuk informasi selengkapnya, lihat Memperkenalkan pembuatan komentar dokumentasi otomatis di Visual Studio.

  • Gunakan Pemilih Model di Visual Studio untuk memilih model AI Anda untuk GitHub Copilot. Untuk informasi lebih lanjut, lihat Mengubah model AI untuk Obrolan Copilot. Cuplikan layar ini memperlihatkan Pemilih Model di bagian bawah jendela obrolan GitHub Copilot:

    Cuplikan layar jendela obrolan GitHub Copilot dengan dropdown Pemilih Model disorot.

    Menu tarik-turun untuk Pemilih Model sudah terbuka. Opsinya meliputi: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking, dan lainnya.

  • Peningkatan integrasi Unreal Engine:

    • Debugger Visual Studio C++ sekarang mendukung Blueprints Unreal Engine.
    • Perintah untuk membuat file, modul, dan plugin tersedia secara asli di Visual Studio.
  • Bendera kompilator baru /forceInterlockedFunctions secara dinamis memilih antara beban Armv8.0, menyimpan instruksi eksklusif atau instruksi atom Ekstensi Sistem Besar (LSE) Armv8.1 berdasarkan kemampuan CPU saat runtime.

  • Menambahkan dukungan untuk penyelesaian berbasis IntelliSense dan info cepat untuk modul CMake di Visual Studio. Anda dapat melihat semua modul CMake yang tersedia dan saat mengarahkan mouse ke modul CMake yang dirujuk, IntelliSense memberikan info selengkapnya tentang modul yang dipilih:

    Cuplikan layar intellisense yang menjelaskan fungsi bantu pencetakan C Make.

    Tangkapan layar adalah edit dalam file C Make Lists .txt. Kursor berada pada include (CMakePrintHelpers). Intellisense mengatakan: Fungsi kemudahan untuk mencetak properti dan variabel, berguna untuk debugging.

    Saat Anda mulai mengetik nama modul CMake di file skrip CMake Anda CMakeLists.txt atau lainnya, IntelliSense menyediakan daftar modul yang tersedia untuk dipilih:

    Cuplikan layar intellisense untuk pernyataan include.

    Tangkapan layar adalah edit dalam file C Make Lists .txt. Kursor berada pada 'include' ( C Make. Dropdown Intellisense berisi entri untuk C Buat Tambahkan Subdirektori Fortran, C Buat Opsi Dependen, dan banyak lagi.

  • Pustaka Dukungan Pedoman (GSL) 4.2.0: Rilis ini mencakup peningkatan performa untuk gsl::span, fitur baru, dan penyelarasan yang lebih baik dengan standar C++. Untuk informasi selengkapnya, lihat Mengumumkan Panduan Dukungan Pustaka v4.2.0.

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

Dirilis Februari 2025

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.13
Fitur Standard Library (STL) C++26 dan C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang diperbaiki, dan memperbaiki bug STL Catatan Perubahan 17.13
Fitur baru di IDE Catatan Rilis Visual Studio 2022 versi 17.13
Pembaruan bahasa C++ pembaruan kompilator MSVC di Visual Studio 2022 17.13
Peningkatan kesuaian bahasa C++ peningkatan Kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.13

Sorotan cepat dari beberapa fitur baru:

  • peningkatan fitur bahasa C++

    • Cobalah fitur pratinjau C++23 dengan mengatur Standar Bahasa C++ ke /std:c++23preview. Pengaturan ini memungkinkan fitur C++23 terbaru dan perbaikan bug. Untuk informasi selengkapnya, lihat /std (Tentukan Versi Standar Bahasa).

    • Dukungan untuk sufiks literal size_t C++23, yang membantu menghindari pemotongan atau ketidakcocokan perbandingan bertipe signed--terutama saat menulis loop. Contohnya:

      // Infinite loop if v.size > max unsigned int 
      for (auto i = 0u; i < v.size(); ++i)
      { 
        ...
      } 
      
      // Fixed because of uz literal 
      for (auto i = 0uz; i < v.size(); ++i)
      { 
        ...
      } 
      
    • Dukungan untuk panjang vektor untuk pembuatan kode pada x86 dan x64. Untuk informasi selengkapnya, lihat /vlen.

    • Dukungan untuk Intel Advanced Vector Extensions 10 versi 1. Untuk informasi selengkapnya tentang /arch:AVX10.1, lihat /arch (x64).

  • Pengembangan Pustaka Standar

    • Dukungan pustaka standar untuk korutin. Dalam contoh ini dari P2502R2, fungsi fib adalah koroutine. Ketika pernyataan co_yield dijalankan, fib ditangguhkan dan nilai dikembalikan ke pemanggil. Anda dapat melanjutkan fib coroutine nanti untuk menghasilkan lebih banyak nilai tanpa memerlukan penanganan status manual apa pun:

      std::generator<int> fib()
      { 
        auto a = 0, b = 1; 
      
        while (true)
        { 
            co_yield std::exchange(a, std::exchange(b, a + b)); 
        }
      } 
      
      int answer_to_the_universe()
      { 
        auto rng = fib() | std::views::drop(6) | std::views::take(3); 
        return std::ranges::fold_left(std::move(range), 0, std::plus{}); 
      } 
      
  • Memindahkan system_clock, high_resolution_clock, dan chrono_literals dari header internal yang umum disertakan ke <chrono>. Jika Anda melihat kesalahan pengkompilasi yang jenisnya seperti system_clock atau literal yang ditentukan pengguna seperti 1729ms tidak dikenali, sertakan <chrono>.

  • Meningkatkan implementasi vektorisasi konstruktor bitset dari string, basic_string::find_last_of(), remove(), ranges::remove, dan keluarga algoritma minmax_element() dan minmax().

  • Menambahkan implementasi vektorisasi dari:

    • find_end() dan ranges::find_end untuk elemen 1-bita dan 2-bita.
    • basic_string::find() dan basic_string::rfind() untuk substring.
    • basic_string::rfind() untuk satu karakter.
  • Laporan Cacat C++23 yang Digabungkan:

    • P3107R5 Mengizinkan implementasi <print>yang efisien.
    • P3235R3std::print Lebih banyak jenis lebih cepat dengan lebih sedikit memori.
  • GitHub Copilot

    • GitHub Copilot Free sekarang tersedia. Dapatkan 2.000 penyelesaian kode dan 50 permintaan obrolan per bulan tanpa biaya.

    • Penyelesaian kode GitHub Copilot memberikan saran pelengkapan otomatis langsung saat Anda ngoding. Untuk meningkatkan pengalaman pengembang C++, GitHub Copilot menyertakan file lain yang relevan sebagai konteks. Ini mengurangi kesalahan saat menawarkan saran yang lebih relevan dan akurat.

    • Sekarang Anda dapat meminta tinjauan kode dari GitHub Copilot dari jendela Perubahan Git:

      Cuplikan layar jendela Perubahan Git dengan tombol GitHub Copilot Review disorot.

      Jendela Perubahan Git terbuka dengan tombol GitHub Copilot Review disorot.

      GitHub Copilot mencari potensi masalah dan membuat komentar untuk mereka:

      Cuplikan layar GitHub Copilot yang menjelaskan masalah.

      GitHub Copilot menemukan masalah dengan baris if (is_enabled_) new_site.disable(). Dikatakan bahwa mungkin ada kesalahan dan seharusnya menjadi if (is_enabled_) new_site.enable() karena maksudnya tampaknya adalah mengaktifkan situs baru jika breakpoint diaktifkan.

      Untuk menggunakan fitur ini, pastikan hal berikut diaktifkan:

      • Peralatan>Opsi>Fitur Pratinjau>Komentar Permintaan Penarikan
      • Alat>Opsi>GitHub>Copilot>Source Control Integration>Mengaktifkan fitur pratinjau Git.
    • GitHub Copilot Edits adalah fitur baru yang dapat membuat perubahan di beberapa file di proyek Anda. Untuk memulai sesi Edit baru, klik Buat sesi edit baru di bagian atas jendela GitHub Copilot Chat:

      Cuplikan layar jendela GitHub Copilot Chat. Tombol Buat sesi edit baru disorot.

      Jelaskan perubahan yang ingin Anda buat dan Copilot menyarankan pengeditan yang relevan. Anda dapat mempratinjau pengeditan satu per satu dan menerima pengeditan yang Anda inginkan atau buat koreksi:

      Cuplikan layar jendela GitHub Copilot Chat yang menampilkan file yang diedit.

      GitHub Copilot menampilkan ringkasan perubahan yang dibuatnya, seperti 1. Buat subkelas baru range_breakpoint di include/libsdb/breakpoint.hpp" dan 2. Terapkan kelas range_breakpoint di src/breakpoint.cpp. Opsi untuk menerima perubahan ditampilkan.

      Untuk informasi selengkapnya, lihat Memproses beberapa file secara lebih efisien dengan GitHub Copilot Edits.

  • CMake

    • Sekarang mendukung CMake Presets v9. Ekspansi makro baru dalam bidang penyertaan di prasetel. Untuk informasi selengkapnya, lihat ekspansi Makro dalam dokumentasi resmi CMake.

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

Dirilis pada November 2024

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Yang Baru untuk Pengembang C++ di Visual Studio 2022 17.12
Standard Library (STL) menggabungkan fitur C++26 dan C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, peningkatan perilaku, dan bug yang diperbaiki STL Changelog 17.12
Fitur Baru di Visual Studio 17.12 IDE Catatan Rilis Visual Studio 2022 versi 17.12
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.12 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.12

Sorotan cepat dari beberapa fitur baru:

  • Penyempurnaan Pustaka Standar
    • Implementasi rentang Pemformatan C++23 (P2286R8) selesai. Menambahkan formatter untuk adaptor kontainer stack, queue, dan priority_queue.
    • Menambahkan operator subskrip multidisipional, yang juga mendukung <mdspan>. Misalnya: print("m[{}, {}]: '{}'; ", i, j, m[i, j]).
  • Pengembangan game di C++
  • Membangun Wawasan
    • Anda dapat menjalankan Build Insights pada file yang dipilih. Pilih file yang Anda inginkan di Penjelajah Solusi, klik kanan, dan pilih Jalankan Build Insights pada File yang Dipilih:Cuplikan layar file di Penjelajah Solusi. Menu konteks terbuka dan opsi untuk Menjalankan Build Insights pada File yang Dipilih disorot.
    • Anda dapat memfilter hasil Build Insights berdasarkan proyek. Klik tombol filter pada header kolom filter dan pilih proyek yang ingin Anda lihat hasilnya: Cuplikan layar jendela Build Insights dengan tab File yang Disertakan terbuka. Tombol filter dipilih dan daftar proyek muncul. Kotak centang di samping Dua proyek dicentang.
    • Mengklik ikon tanda tanya di jendela Build Insights untuk melihat deskripsi singkat untuk tab di jendela Build Insights, dan tautan ke dokumentasi untuk penjelasan terperinci: Cuplikan layar jendela Build Insights dengan tombol lihat penjelasan (tanda tanya dalam lingkaran) disorot.
  • GitHub Copilot
    • Anda dapat mengklik Tanyakan Copilot di samping nilai variabel untuk mendapatkan wawasan berbasis AI ke dalam apa yang menyebabkan statusnya saat ini. Misalnya, program berikut memiliki kesalahan off-by-one dalam kondisi perulangannya:

    Cuplikan layar jendela Autos. Variabel bernama it adalah NULL. Ikon Tanya Copilot di sampingnya disorot.

    Kode yang menyebabkan masalah ini adalah: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Jika Anda mengklik ikon Tanya Copilot untuk variabel it, ikon tersebut akan menjelaskan mengapa variabel tersebut adalah <NULL>.

    Cuplikan layar jendela GitHub Copilot.

    Kesalahan ini berada di dalam fungsi yang didefinisikan sebagai int calculate_number_of_cats(const house&h). Pesan GitHub Copilot mengatakan: "Nilai ekspresi itu ADALAH NULL, yang berarti bahwa iterator tidak menunjuk ke elemen yang valid di vektor animals_. Dalam konteks program Anda, seharusnya melakukan iterasi di atas vektor animals_ di objek rumah untuk menghitung jumlah objek kucing. Mengapa null. Berdasarkan informasi lokal dan konteks tumpukan panggilan: objek rumah h memiliki vektor animals_ yang kosong (ukuran=0). Kondisi perulangan it <= h.animals_.end() tidak benar. Seharusnya itu != h.animals_.end()."

    • Anda dapat mengklik Tanyakan Copilot tentang kesalahan di Daftar Kesalahan Visual Studio untuk mendapatkan bantuan tentang kesalahan dan perbaikan yang disarankan. Contohnya:

    Cuplikan layar jendela Daftar Kesalahan.

    Ikon Ask Copilot disorot di samping kesalahan bahwa unique_ptr mencoba mereferensikan fungsi yang telah dihapus.

    Jika Anda mengklik Tanyakan Copilot, ini memberi tahu Anda tentang kesalahan:

    Cuplikan layar penjelasan GitHub Copilot untuk kesalahan tersebut.

    Pesan Copilot mengatakan: "Kesalahan terjadi karena perulangan berbasis rentang mencoba menyalin objek std::unique_ptr, yang tidak diizinkan karena std::unique_ptr tidak dapat disalin. Untuk memperbaiki ini, saya mengubah loop menjadi menggunakan referensi agar objek std::unique_ptr tidak perlu disalin. Dengan cara ini, perulangan berulang atas referensi ke objek std::unique_ptr, yang diizinkan."

  • Pemecahan Masalah
    • Visualizer debug baru untuk mutex, recursive_mutex, dan move_iterator.
    • Debugger sekarang menampilkan nilai pengembalian sebaris: Cuplikan layar tooltip yang menunjukkan nilai 8.25. Ini adalah hasil dari ekspresi setelah pernyataan pengembalian yang dilewati.

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

Dirilis Agustus 2024

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Yang Baru untuk Pengembang C++ di Visual Studio 2022 17.11
Pustaka Standar (STL) menggabungkan fitur C++26 dan C++23, laporan cacat pada C++20, resolusi masalah Language Working Group (LWG), peningkatan kinerja, perilaku yang diperbaiki, dan memperbaiki bug. STL Changelog 17.11
Fitur baru di Visual Studio 17.11 IDE Catatan Rilis Visual Studio 2022 versi 17.11
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.11 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.11

Daftar parsial fitur baru:

  • Penyempurnaan Pustaka Standar

    • Implementasi output berformat sekarang mencakup std::range_formatter dan formatter untuk std::pair dan std::tuple.
    • Menambahkan dukungan untuk std::println() tanpa argumen. Ini mencetak baris kosong seperti yang diusulkan dalam P3142R0.
    • Vektorisasi yang ditingkatkan untuk beberapa algoritma termasuk replace_copy(), , replace_copy_if(), ranges::replace_copy, ranges::replace_copy_if, find_first_of() dan ranges::find_first_of, untuk elemen 8-bit dan 16-bit, mismatch(), , ranges::mismatchcount(), ranges::countfind(), ranges::find, ranges::find_lastdan ranges::iota.
  • Pengembangan game di C++

    • Anda sekarang dapat menambahkan templat, modul, dan plugin kelas Unreal Engine umum dari dalam Visual Studio. Untuk informasi selengkapnya, lihat Menambahkan kelas, modul, dan plugin Unreal Engine di Visual Studio.
    • Toolbar Unreal Engine baru menyediakan akses cepat ke tindakan terkait Unreal Engine dari dalam Visual Studio. Toolbar memungkinkan Anda untuk dengan cepat melampirkan ke proses Unreal Engine, memindai ulang cache Blueprints, dengan cepat mengakses Log Unreal Engine, dan memberikan akses cepat ke Halaman Konfigurasi Unreal Engine untuk Visual Studio. Untuk informasi selengkapnya, lihat Unreal Engine Toolbar.
    • Sekarang Anda dapat memfilter hasil pelacakan menurut proyek. Selain itu, hasil di setiap baris menunjukkan jalur relatif dan nama file alih-alih jalur lengkap. Pengelompokan hasil dalam tampilan File yang Disertakan juga ditingkatkan:

    Cuplikan layar hasil diagnostik yang ditingkatkan untuk File yang Disertakan.

    Tampilan File yang Disertakan memiliki kolom baru untuk proyek. Kolom Proyek dipilih dan proyek seperti (Pilih Semua), CompilerIdC, OpenAL, umum, dan sebagainya, dipilih. File yang disertakan dicantumkan berdasarkan jalur relatif dan nama file dan dikelompokkan bersama-sama.

  • penelusuran kesalahan CMake

    • Anda sekarang dapat men-debug skrip dan CMakeLists.txt file CMake Anda di debugger Visual Studio untuk proyek CMake yang menargetkan Linux melalui Subsistem Windows untuk Linux (WSL) atau SSH. Untuk memulai sesi penelusuran kesalahan CMake di Visual Studio, atur titik henti di file Anda CMakeLists.txt lalu navigasi ke Project>Configure Cache dengan CMake Debugging.
  • GitHub Copilot

    • Saat Anda mengarahkan mouse ke atas simbol di editor kode, klik tombol Copilot Beritahu saya lebih banyak di dialog Info Cepat untuk mempelajari lebih lanjut tentang simbol tertentu.

    Cuplikan layar jendela Info Cepat.

    Jendela Info Cepat diperlihatkan di atas fungsi. Tautan Pelajari selengkapnya disorot.

    • GitHub Copilot dapat menghasilkan saran penamaan untuk pengidentifikasi Anda (variabel, metode, atau kelas) berdasarkan bagaimana pengidentifikasi Anda digunakan dan gaya kode Anda.

      Cuplikan layar dialog GitHub Copilot Rename.

      Dialog Ganti Nama memiliki bidang Nama baru dengan daftar dropdown yang memperlihatkan pilihan berikut: text_color, font_color, display_color, console_color, dan menu_text_color.

    Anda memerlukan langganan GitHub Copilot aktif. Klik kanan variabel yang ingin Anda ganti namanya, dan pilih Ganti Nama (Ctrl+R, Ctrl+R). Pilih ikon gitHub Copilot sparkle untuk menghasilkan saran penamaan.

  • Pemecahan Masalah

    • Titik henti kondisi di C++ lebih cepat.
  • Peningkatan diagnostik

    • Diagnostik yang ditingkatkan saat memanggil std::get<T> pada std::tuple yang dengan beberapa instance T dalam argumen templatnya. MSVC digunakan untuk melaporkan:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Sekarang melaporkan:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Diagnostik yang ditingkatkan jika std::ranges::to tidak bisa menghasilkan hasil yang diminta. MSVC digunakan untuk melaporkan:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Sekarang melaporkan:
      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)'

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

Dirilis Mei 2024

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang baru untuk Pengembang C++ di Visual Studio 2022 17.10
Pustaka Standar (STL) menggabungkan fitur C++26 dan C++23, laporan cacat pada C++20, resolusi masalah Language Working Group (LWG), peningkatan kinerja, perilaku yang diperbaiki, dan memperbaiki bug. STL Changelog 17.10
Fitur baru di Visual Studio 17.10 IDE Catatan Rilis Visual Studio 2022 versi 17.10
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.10 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.10

Daftar parsial fitur baru:

  • MSVC Toolset Update: Versi toolset MSVC diperbarui dari 19.39 ke 19.40. Ini dapat memengaruhi proyek yang memiliki asumsi versi. Untuk informasi selengkapnya tentang beberapa cara di mana ini memengaruhi proyek yang mengasumsikan bahwa versi MSVC semuanya adalah 19,3X untuk rilis Visual Studio 2022, lihat MSVC Toolset Minor Version Number 14.40 di VS 2022 v17.10.
  • Penyempurnaan Pustaka Standar: Pustaka standar menambahkan dukungan untuk P2510R3 Format Penunjuk, yang membuat kumpulan penentu format untuk penunjuk saat menggunakan std::format lebih sesuai dengan yang sudah ada untuk bilangan bulat. Meningkatkan implementasi vektorisasi dari std::min_element, std::ranges::min dan teman.
  • Build Insights: Sekarang menyediakan informasi instansiasi templat. Lihat Tampilan Templat untuk Wawasan Build di Visual Studio atau C++ Virtual Murni - Tampilan Templat untuk Build Insights di rekaman Visual Studio.
  • Plugin Unreal Engine: Ada fitur opsional baru yang memungkinkan Plugin Unreal Engine berjalan di latar belakang, mengurangi waktu startup. Ini adalah fitur opt-in yang diaktifkan melalui Alat>Opsi>Unreal Engine.
  • Fitur baru untuk Linux: Lihat Fitur Pengembangan Linux Baru di Visual Studio.
  • Target CMake: Anda sekarang dapat menyematkan target pada Tampilan Target CMake.
  • Pengelola Sambungan UX: Pengalaman pengguna memberikan pengalaman yang lebih mulus saat terhubung ke sistem jarak jauh. Untuk informasi selengkapnya, lihat Peningkatan Kegunaan di Pengelola Sambungan Visual Studio.
  • Komentar permintaan tarik: Anda sekarang dapat melihat komentar GitHub dan Azure DevOps langsung di file kerja Anda. Aktifkan pengaturan fitur, Komentar Permintaan Tarik di Opsi>Lingkungan>Fitur Pratinjau dan periksa cabang permintaan tarik untuk memulai.
  • Konten yang Dihasilkan AI: GitHub Copilot sekarang dapat membuat draf deskripsi permintaan pull. Memerlukan langganan GitHub Copilot aktif. Cobalah dengan mengklik ikon pena kilau Tambahkan Deskripsi Permintaan Tarik yang Dihasilkan AI di dalam jendela Buat Permintaan Tarik.
  • Pratinjau Gambar: Arahkan mouse ke atas jalur gambar untuk melihat pratinjau lengkap dengan detail ukuran. Ukurannya dibatasi hingga lebar 500 px dan tinggi.

    Cuplikan layar pratinjau melayang.

    Tetikus melayang di atas baris std::filesystem::path vs_logo_path = "../images/vs_logo.png". Di bawahnya muncul pratinjau logo Visual Studio dan informasi bahwa ukurannya 251 x 500 piksel dan 13,65 KB.

  • Pembuatan Titik Henti/Titik Pelacakan: Anda sekarang dapat membuat titik henti atau titik pelacakan bersyarat langsung dari ekspresi dalam kode sumber melalui menu klik kanan. Ini berfungsi pada properti atau nama kolom dan nilai dari otomatisasi, lokal, jendela pemantauan, atau Petunjuk Data.
  • Dialog Lampirkan ke Proses: Fungsionalitas yang disediakan oleh dialog Lampirkan ke Proses lebih mudah digunakan. Anda sekarang dapat dengan mudah beralih antara tampilan pohon dan daftar, mengatur proses dengan lebih baik dengan bagian yang dapat diciutkan, dan memilih jenis kode dengan kotak kombo yang disederhanakan. Selain itu, fitur "Pilih/Lacak Jendela" sekarang lebih mudah digunakan, memungkinkan pelacakan dua arah: memilih proses menyoroti jendelanya, dan mengklik jendela memilih prosesnya.
  • Integrasi GitHub Copilot: Ekstensi GitHub Copilot dan Copilot Chat sekarang disatukan dan kini tersedia langsung di Visual Studio. Untuk menginstalnya, instal komponen GitHub Copilot di Penginstal Visual Studio:

    Cuplikan layar opsi penginstalan Visual Studio Installer GitHub Copilot.

    Antarmuka GitHub Copilot berada di sudut kanan atas Visual Studio. Untuk menggunakannya, Anda memerlukan langganan GitHub Copilot aktif.

    Cuplikan layar tombol GitHub Copilot.

    Tombol GitHub Copilot ditampilkan di sudut kanan atas Visual Studio. Ini memiliki opsi untuk membuka jendela obrolan, pengaturan GitHub Copilot, mempelajari lebih lanjut, dan mengelola langganan copilot.

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

Dirilis Februari 2024

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang baru untuk Pengembang C++ di Visual Studio 2022 17.9
Fitur C++23 dari Pustaka Standar (STL) digabungkan, peningkatan performa, perilaku yang lebih baik, penyelesaian masalah Language Working Group (LWG), dan perbaikan bug STL Changelog 17.9
Fitur baru di Visual Studio 17.9 IDE Catatan Rilis Visual Studio 2022 versi 17.9
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.9 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022
Ringkasan pembaruan backend C++ Pembaruan MSVC Backend sejak Visual Studio 2022 versi 17.3

Daftar parsial fitur baru:

  • #include diagnostik, yang menyediakan analisis terperinci tentang arahan Anda #include . Aktifkan fitur ini dengan mengklik kanan #include dan memilih arahan #include>Aktifkan diagnostik arahan #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 direktif Anda #include, jalankan Build Insights dengan membuka Build>Run Build Insights on Solution>Build.

    Cuplikan layar diagnostik #include.

    Di atas # include adalah tautan **referensi** dan banyak referensi ke file # include ini (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 union Anda. Arahkan kursor ke jenis dan pilih tautan Tata Letak Memori di Info Cepat untuk membuka jendela khusus yang menampilkan tata letak memori dari jenis yang dipilih. Menggerakkan mouse di atas tipe data individu dalam jendela ini memberikan informasi terperinci tentang ukuran dan offset dalam tipe tersebut.

    Cuplikan layar jendela tata letak memori

    Jendela tata letak memori menunjukkan isi kelas Snake. 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. Arahkan ke Alat>Opsi dan pilih CMake>Umum. Pilih Aktifkan 'Eksekusi CMake Kustom' dan berikan jalur direktori eksekusi CMake Anda.

    Cuplikan layar dialog opsi CMake

    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 ditingkatkan: std::format dan std::spanformattable, range_format, format_kind, dan set_debug_format() sebagai bagian dari P2286R8 Pemformatan Rentang<mdspan> sesuai dengan P0009R18 dan perubahan kata-kata berikutnya yang diterapkan pada Standar C++23. Selain itu, format() dapat memformat penunjuk per P2510R3.

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

Dirilis Nov 2023

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang baru untuk Pengembang C++ di Visual Studio 2022 17.8
Pustaka Standar (STL) menggabungkan fitur-fitur C++26, C++23, ekstensi C++20, resolusi masalah dari Language Working Group (LWG), peningkatan performa, perilaku yang lebih baik, dan memperbaiki bug. STL Changelog 17.8
Fitur baru di Visual Studio 17.8 IDE Catatan Rilis Visual Studio 2022 versi 17.8
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.8 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022
Gambaran umum peningkatan C++ di Visual Studio, VISUAL Code, dan vcpkg selama 2023 Setahun penyempurnaan C++

Daftar parsial fitur baru:

  • 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 kursor pada pengidentifikasi dan Informasi Cepat menampilkan informasi ukuran dan perataan.
  • Fitur yang menunjukkan kapan harus menandai fungsi anggota const 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 penyertaan yang disamarkan dan menggunakan menu lampu untuk menghapus penyertaan itu atau semua penyertaan yang tidak digunakan. 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 Lebih Lanjut untuk Unreal Engine
    • "Unreal Engine Test Adapter memungkinkan Anda menemukan, menjalankan, mengelola, dan melakukan debug pengujian Unreal Engine Anda tanpa meninggalkan Visual Studio IDE."
    • Dengan Unreal Engine Code Snippets, Anda dapat menemukan konstruksi umum dari Unreal Engine sebagai cuplikan dalam daftar kode 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 dibutuhkan untuk mengkompilasi dan jumlah ForceInlines, dan dampak file header pada waktu build. Untuk informasi selengkapnya, lihat Tutorial: Mengatasi masalah fungsi inlining pada waktu build dan Tutorial: Mengatasi masalah dampak file header pada waktu build.
  • 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.

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

Dirilis Agu 2023

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang baru untuk Pengembang C++ di Visual Studio 2022 17.7
Fitur C++ baru khusus untuk pengembangan game Melepaskan Kekuatan Visual Studio 2022 untuk Pengembangan Game C++
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.7
Fitur baru di Visual Studio 17.7 IDE Catatan Rilis Visual Studio 2022 versi 17.7
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.7 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru:

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

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

Dirilis Mei 2023

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.6
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.6
Fitur baru di Visual Studio 17.6 IDE Catatan Rilis Visual Studio 2022 versi 17.6
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.6 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru meliputi:

  • Pencarian kesalahan skrip CMake
  • Dukungan bawaan untuk Bahasa Bayangan Tingkat Tinggi (HLSL)
  • Penampil Log Unreal Engine
  • VCPKG sekarang ditambahkan secara default
  • Dukungan awal untuk C++20 dalam proyek C++/CLI dan beberapa fitur pustaka standar C++23 untuk rentang.

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

Dirilis Februari 2023

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.5
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.5
Fitur baru dalam Visual Studio 17.5 IDE Catatan Rilis Visual Studio 2022 versi 17.5

Daftar parsial fitur baru meliputi:

  • 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 penggunaan tipe tertentu 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]]. 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.

  • Perubahan versi executable CMake yang disertakan dengan Visual Studio agar sesuai dengan versi Kitware.

  • Menambahkan dukungan untuk Hot Reload ke templat Proyek CMake.

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

  • Memulai peluncuran eksperimen yang memberikan hasil yang lebih cerdas dalam pelengkapan otomatis kode dan daftar 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 pada referensi Blueprint untuk kelas atau properti C++ untuk membuka Pemeriksa Aset UE di Visual Studio.

  • Mengaktifkan menjalankan DevContainers pada komputer Linux jarak jauh.

  • Memungkinkan pemilihan beberapa target untuk dibangun dalam tampilan CMake Targets.

  • 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

Dirilis Nov 2022

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Apa yang Baru untuk Pengembang C++ di Visual Studio 2022 17.4
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.4
Fitur baru di Visual Studio 17.4 IDE Catatan Rilis Visual Studio 2022 versi 17.4
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.4 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru di 17.4:

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

  • Menambahkan opsi MSVC eksperimental /experimental:log<directory> untuk menyimpan diagnostik SARIF terstruktur ke dalam 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 Optimalisasi Nilai Pengembalian Bernama (NRVO):

    • NRVO diaktifkan untuk kasus yang melibatkan penanganan pengecualian atau perulangan.
    • NRVO diaktifkan bahkan di bawah /Od jika pengguna meneruskan opsi /Zc:nrvo, 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 di Visual Studio untuk artefak vcpkg dalam 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 kini menghormati urutan header yang sudah disertakan 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 Ant dihapus, sehingga pengguna tidak lagi dapat 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 mengembangkan 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

    • P2499R0string_view Konstruktor Rentang Harus explicit

    • 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 Tambah pmr Alias Untuk std::stacktrace

    • P1328R1 constexpr type_info::operator==()

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

    • P2441R2 views::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

Dirilis Agu 2022

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Peningkatan C++ pada 17.3
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.3
Fitur Baru dalam Visual Studio IDE 17.3 Catatan Rilis Visual Studio 2022 versi 17.3
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.3 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru di 17.3:

  • 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. Menu 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 definisi sebelumnya dan menavigasi sesuai ketika tidak ada kecocokan yang lebih baik tersedia (misalnya, setelah Anda mengubah definisi salah satu dari 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 penyelesaian tipe enum (misalnya, penugasan ke variabel enum, label kasus, pengembalian tipe 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 tersemat, 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 Toolset C++ Dev 16.11 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

Dirilis Mei 2022

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Visual Studio 2022 17.2 sekarang tersedia
Pustaka Standar (STL) menggabungkan laporan cacat C++20, fitur C++23, resolusi masalah dari Language Working Group (LWG), peningkatan performa, peningkatan pada perilaku, dan perbaikan bug. STL Changelog 17.2
Fitur baru di Visual Studio 17.2 IDE Catatan Rilis Visual Studio 2022 versi 17.2
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.2 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru di 17.2:

  • Menambahkan dukungan pengompilasi untuk fitur C++23 deducing this, tersedia dengan opsi /std:c++latest.
  • Menambahkan dukungan IntelliSense untuk fitur C++23 menyimpulkan this dan if consteval.
  • Menambahkan dukungan petunjuk nama dan tipe parameter sebaris, yang dapat diaktifkan dengan menekan Alt+F1 atau mengetuk Ctrl dua kali. 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 register periferal dan tampilan RTOS untuk pengembang sistem tertanam. 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 dukungan 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-backport yang telah diimplementasikan, lihat Changelog VS 2022 di repositori GitHub Microsoft/STL dan posting 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 catatan perubahan repositori STL.
  • Peningkatan performa pengindeksan C++ awal hingga 20%, tergantung kedalaman grafik yang disertakan.

Yang baru untuk C++ di Visual Studio versi 17.1

Dirilis Februari 2022

Untuk informasi lebih lanjut tentang Lihat
Apa yang baru untuk pengembang C++ Visual Studio 2022 17.1 sekarang tersedia!
Pustaka Standar (STL) menggabungkan fitur C++23, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang disempurnakan, dan perbaikan bug. STL Changelog 17.1
Fitur baru di Lingkungan Pengembangan Terpadu (IDE) Visual Studio 17.1 Catatan Rilis Visual Studio 2022 versi 17.1
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.1 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022

Daftar parsial fitur baru di 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 men-debug dari jarak jauh di debugger Visual Studio dengan dukungan GDB atau LLDB.
  • Anda sekarang bisa melakukan debug terhadap core dump pada sistem macOS remote 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. Jika sebuah CMakeLists.txt teridentifikasi di tingkat lain dari ruang kerja, maka Anda akan diberi pemberitahuan untuk mengaktifkan integrasi CMake Visual Studio.
  • 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 tampilan utas baru untuk proyek RTOS, yang dapat diakses 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

Dirilis Nov 2021

Untuk informasi lebih lanjut tentang Lihat
Fitur baru di Visual Studio 17.0 IDE Catatan Rilis Visual Studio 2022 versi 17.0
Pustaka Standar (STL) menggabungkan fitur C++23 dan C++26, laporan kesalahan C++20, resolusi masalah Language Working Group (LWG), peningkatan performa, perilaku yang ditingkatkan, dan perbaikan bug. STL Changelog 17.0
Peningkatan kesuaian bahasa C++ di Visual Studio 2022 17.0 Peningkatan kesesuaian C++, perubahan perilaku, dan perbaikan bug di Visual Studio 2022 17.10

Gambaran umum beberapa fitur baru di Visual Studio 2022 versi 17.0:

  • Visual Studio IDE, devenv.exe, sekarang menjadi aplikasi 64-bit khusus.
  • Toolset MSVC sekarang menggunakan secara default hashing sumber SHA-256 di catatan debug. 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 fitur bawaan Edit and Continue. 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

Peningkatan Pustaka Standar (STL) pilihan yang 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 ada dukungan untuk Clang.
  • P1004R2 Dibuat std::vectorconstexpr di VS 2019 16.10. Sekarang ada dukungan 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.
  • out_ptr()P1132R7,inout_ptr()
  • P1679R3 Untuk contains() dan basic_string
  • to_underlying() P1682R3 untuk enumerasi
  • P2162R2 Izinkan pewarisan dari std::variant
  • P2166R1 Melarang pembangunan basic_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 unggulan

  • <format> sekarang mendeteksi saat melakukan penulisan ke back_insert_iterator untuk basic_string atau vector, dan melakukan panggilan insert() yang lebih cepat ke end() dari kontainer.
  • Kami meningkatkan performa std::find() dan std::count() masing-masing sebesar 19 kali dan 26 kali (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 memecahkan kesalahan proses yang berjalan pada sistem remote 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 Dukungan 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 otomatis, memberikan saran instan secara langsung saat Anda mengetik dan saran perbaikan 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 workload C++ kini menginstal Unreal Engine terbaru yang mendukung 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.
  • Menambahkan dukungan untuk gsl::not_null pada analisis kode.
  • Dukungan untuk Libfuzzer pada opsi kompilasi/fsanitize=fuzzer.

Catatan rilis untuk versi yang lebih lama

Catatan rilis untuk versi C++ yang lebih lama juga tersedia:

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 pembahasan mendalam tentang beragam fitur. Blog Tim C++ dan Blog Visual Studio sangat menarik.