Visual Studio 2022'de C++ ile ilgili yenilikler

Visual Studio 2022, Microsoft C++ derleyicisine ve araçlarına birçok güncelleştirme ve düzeltme getirir. Visual Studio IDE ayrıca performans ve üretkenlikte önemli geliştirmeler sunar ve şimdi 64 bit uygulama olarak yerel olarak çalışır.

Visual Studio sürüm 17.9'da C++ ile ilgili yenilikler

Kısaca, yeni özelliklerden bazıları şunlardır:

  • #include tanılaması, yönergelerinizin #include ayrıntılı bir analizini sağlar. Bir öğesine sağ tıklayıp #include #include yönergelerini>seçerek bu özelliği etkinleştirin #include yönerge tanılamasını açın. #include Her birinin üstünde kodunuzun bu dosyaya kaç kez başvurduğunu #include gösterir. Kodunuzun bu üst bilgi dosyasından bir şey kullandığı yere gitmek için başvuru bağlantısına tıklayın. Yönergelerinizin #include derleme süresini görüntülemek için Derleme Derleme Analizler'ni çalıştırarak Çözüm>Derlemesinde Derleme>Çalıştırma Analizler'ne geçin.

    Screenshot of #include diagnostics

    # include dosyasının üstünde bir **başvuru** bağlantısı ve bu # include dosyasına yapılan başvuruların bir numarası bulunur (bu durumda 1). Derleme süresi de listelenir (bu durumda saniyede 1/2'den az).

  • Belleğin sınıflarınız, yapılarınız ve birleşimleriniz için nasıl düzenlendiğini gösteren bellek düzeni görselleştirmesi. Bir türün üzerine gelin ve Seçilen türün bellek düzenini gösteren ayrılmış bir pencere açmak için Hızlı Bilgi'deki Bellek Düzeni bağlantısını seçin. Bu penceredeki tek tek veri türlerinin üzerine gelindiğinde, türün içindeki boyutları ve uzaklıkları hakkında ayrıntılı bilgi sağlanır.

    Screenshot of the memory layout window

    Bellek düzeni penceresinde Snake sınıfının içeriği gösterilir. Baş ve gövde konumu için Point sınıfları, puan vb. gibi sınıfın çeşitli alanlarının bellek uzaklıklarını gösterir.

  • Artık kendi özel CMake yürütülebilir dosyanızı belirtebilirsiniz. Bu özellik, Visual Studio ile birlikte gönderilmemiş belirli bir CMake sürümünü kullanmak istiyorsanız kullanışlıdır. Araçlar>Seçenekleri'negidin ve CMake Genel'i> seçin. Özel CMake yürütülebilir dosyasını etkinleştir'i seçin ve CMake yürütülebilir dosyanızın dizin yolunu belirtin.

    Screenshot of the CMake options dialog

    "Özel CMake yürütülebilir dosyasını etkinleştir" seçeneğinin ve "CMake Yürütülebilir Dizini" alanının vurgulandığı CMake seçenekleri iletişim kutusu.

  • Unreal Engine projeleri için geliştirilmiş IntelliSense.
  • C++23 desteği geliştirildi: std::format ve std::spanformattable, range_format, format_kindve set_debug_format() P0009R18 başına P2286R8 Biçimlendirme Aralıkları<mdspan> ve C++23 Standard'a uygulanan sonraki sözcük değişikliklerinin bir parçası olarak. Ayrıca, format() P2510R3 başına işaretçileri biçimlendirebilir.

C++ arka uç güncelleştirmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.3'ten bu yana MSVC Arka uç güncelleştirmeleri.

Visual Studio 17.9 IDE'deki yeni özelliklerin özeti için bkz . Visual Studio 2022 sürüm 17.9 Sürüm Notları.

Visual Studio sürüm 17.8'deki C++ ile ilgili yenilikler

Kısaca, yeni özelliklerden bazıları şunlardır:

  • Çıkış penceresinde C++ yapılandırılmış tanılama ve hata hakkında daha fazla bilgi sağlayan yeni bir sorun ayrıntıları penceresi. Daha fazla bilgi için bkz . Yapılandırılmış SARIF Çıktısı ve Sorun Ayrıntıları Penceresi.
  • Kod derlenmesinden önce bile sınıflarınızın, yapılarınızın, birleşimlerinizin, temel türlerinizin veya sabit listelerinizin boyutunu ve hizalamasını görselleştirmenize olanak tanıyan bir özellik. Tanımlayıcının üzerine gelin ve Hızlı Bilgi boyut ve hizalama bilgilerini görüntüler.
  • Nesnenin durumunu değiştirmedikleri için üye işlevlerin const ne zaman işaretlendiğini öneren bir özellik. Bir üye işlevinin üzerine gelin ve ampul simgesine tıklayarak işlevi olarak constişaretleyin.
  • Visual Studio şimdi işlev adında görünen bir tornavida simgesi aracılığıyla genel işlevleri statik olarak işaretlemenizi ister. İşlevi statik olarak işaretlemek için tornavida simgesine tıklayın.
  • Kullanılmayan #include yönergeleri düzenleyicide soluk görüntülenir. Soluk bir eklemenin üzerine gelebilir ve ampul menüsünü kullanarak bu dahil edilenleri veya kullanılmayan tüm eklemeleri kaldırabilirsiniz. Diğer üst bilgiler aracılığıyla dolaylı olarak dahil edilen varlıklar için yönergeler de ekleyebilirsiniz #include . Daha fazla bilgi için bkz . Visual Studio'da C/C++ eklemelerini temizleme.
  • Daha fazla Gerçek Dışı Altyapı desteği:
    • Gerçek Dışı Altyapı Test Bağdaştırıcısı, Visual Studio IDE'den çıkmadan Gerçek Dışı Altyapı testlerinizi bulmanızı, çalıştırmanızı, yönetmenizi ve hatalarını ayıklamanızı sağlar.
    • Unreal Engine Code Kod Parçacıkları ile, üye listenizde kod parçacıkları olarak yaygın Unreal Engine yapılarını bulabilirsiniz.
    • Derleme Analizler artık Visual Studio 2022 ile tümleştirilmiştir ve MSVC kullanarak MSBuild ve CMake projeleriyle çalışır. Artık derlemenin ne kadar sürdüğü ve ForceInlines sayısı gibi bir işlevin derlenmesi hakkında ek bilgiler görebilirsiniz.
  • Uzak Linux birim testi desteği artık yerel testleriniz gibi CTest ve GTest testlerinizi Visual Studio'nun Test Gezgini'nden uzak Linux makinelerinizde çalıştırmanıza olanak tanır.

Visual Studio 17.8'deki yeni C++ özelliklerinin kapsamlı bir özeti için bkz . Visual Studio 2022 17.8'deki C++ Geliştiricileri için Yenilikler.

Visual Studio 17.8 IDE'deki yeni özelliklerin özeti için bkz . Visual Studio 2022 sürüm 17.8 Sürüm Notları.

Visual Studio sürüm 17.7'deki C++ ile ilgili yenilikler

Visual Studio 17.7'deki yeni C++ özelliklerinin özeti için bkz . Visual Studio 2022 17.7'de C++ Geliştiricileri için Yenilikler.

Kısaca, yeni özelliklerden bazıları şunlardır:

  • Daha hızlı hata ayıklama oturumları ve daha hızlı proje yükleme süreleri
  • Makro genişletmenin adım adım görselleştirmesi
  • Linux için Windows Alt Sistemi için tek tıklamayla indirme (WSL)
  • Doxygen yorumları için geliştirilmiş destek
  • Oyun geliştirme için C++ derleme Analizler
  • C derleyicisi için eklendi /std:clatest .
  • Daha hızlı IntelliSense ve söz dizimi renklendirmesi, tüm Gerçek Dışı Altyapı Şeması başvurularını bulma özelliği ve daha fazlası gibi Gerçek Dışı Altyapı proje geliştirmeleri.

Oyun geliştirmeye özgü yeni C++ özelliklerinin özeti için bkz . C++ Oyun Geliştirme için Visual Studio 2022'nin Gücünü Ortaya Çıkarma

Visual Studio 17.7 IDE'deki yeni özelliklerin özeti için bkz . Visual Studio 2022 sürüm 17.7 Sürüm Notları.

Visual Studio sürüm 17.6'daki C++ ile ilgili yenilikler

Visual Studio 17.6'daki yeni C++ özelliklerinin özeti için bkz . Visual Studio 2022 17.6'da C++ Geliştiricileri için Yenilikler.

Kısaca, yeni özelliklerden bazıları şunlardır: CMake betik hata ayıklama, Yüksek Düzey Gölgelendirme Dili (HLSL) için yerleşik destek, Gerçek Dışı Altyapı Günlüğü görüntüleyicisi, C++/CLI projelerinde C++20 için ilk destek, VCPKG artık varsayılan olarak eklenir ve aralıklar için bazı C++23 standart kitaplık özellikleri. Standart kitaplığa eklenen yeni özelliklerin tam listesini görmek için bkz . STL değişiklik günlüğü.

Visual Studio 17.6 IDE'deki yeni özelliklerin özeti için bkz . Visual Studio 2022 sürüm 17.6 Sürüm Notları.

Visual Studio sürüm 17.5'teki C++ ile ilgili yenilikler

Sürüm 17.5'te Visual Studio'daki yeni C++ özelliklerinin özeti için bkz . Visual Studio 2022 17.5'teki C++ Geliştiricileri için Yenilikler. Visual Studio IDE sürüm 17.5'teki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.5 Sürüm Notları.

  • std::move, std::forward, std::move_if_noexceptve std::forward_like artık hata ayıklama modunda bile oluşturulan kodda işlev çağrıları üretmez. Bu değişiklik, hata ayıklama derlemelerinde gereksiz yüke neden olan adlandırılmış atamaları önler. /permissive- (veya veya gibi /std:c++20std:c++latestbunu ima eden bir seçenek) gereklidir.

  • Yukarıdaki öğeyi desteklemek için eklendi [[msvc::intrinsic]] . Bu özniteliği, yalnızca bir parametreyi alan tek bir atamadan oluşan, özyinelemeli olmayan işlevlere uygulayabilirsiniz.

  • Tümleşik Terminalde, terminal G/Ç'ye olanak tanıyan Linux Konsolu desteği eklendi.

  • C11 atomik temel öğeleri<stdatomic.h> () için ilk deneysel destek eklendi. Bu deneysel özelliği mod veya sonraki bir seçenekle /experimental:c11atomics/std:c11 etkinleştirebilirsiniz.

  • Daha az kirlilik için Yaşam Süresi Denetleyicisi'ne yeni bir deneysel yüksek güvenilirlik denetimi kümesi eklendi.

  • Uzak Dosya Gezgini adlı yeni bir önizleme özelliği, VS içindeki uzak makinelerinizde dosya dizinini görüntülemenizi ve dosyaları karşıya yükleyip indirmenizi sağlar.

  • Visual Studio ile birlikte gönderilen CMake yürütülebilir dosyaları Kitware sürümleriyle eşleşecek şekilde değiştirildi.

  • CMake Projesi şablonuna Çalışırken Yeniden Yükleme desteği eklendi.

  • C++ için Tanıma Git artık işlemin daha fazla zaman aldığına ilişkin daha ince bir gösterge kullanıyor ve önceki sürümlerden kalıcı iletişim kutusunun yerini alıyor.

  • C++ otomatik tamamlama ve üye listesinde daha akıllı sonuçlar sağlayan bir denemenin dağıtımı başlatıldı. Bu işlev daha önce Tahmine Dayalı IntelliSense olarak biliniyordu ancak şimdi yeni bir sunu yöntemi kullanıyor.

  • Şimdi LLVM iş yükümüzle yerel bir Arm64 Clang araç takımı göndererek Arm64 makinelerinde yerel derlemeye olanak sunuyoruz.

  • Image Watch Uzantısına yerelleştirme eklendi (Bu uzantı Market'te kullanılabilir ve Visual Studio Yükleyicisi üzerinden paketlenmez).

  • Şu anda çalışan Geliştirici Kapsayıcısı'na Terminal penceresi açma desteği eklendi.

  • IntelliSense makro genişletmesinde çeşitli geliştirmeler yapıldı. Özellikle, daha fazla bağlamda özyinelemeli genişletmeyi etkinleştirdik ve genişletmeyi panoya kopyalamak veya makroyu satır içi olarak genişletmek için açılır pencereye seçenekler ekledik.

  • Eşzamanlı izleme artık Seri İzleyici'de desteklenmektedir. Eşzamanlı izleme, birden çok bağlantı noktasını aynı anda yan yana izlemenizi sağlar. Başka bir Seri monitör açmak ve başlamak için artı düğmesine basın.

  • Artık Visual Studio'dan çıkmadan Gerçek Olmayan Şema varlığında değiştirilen temel sınıflardan özellikleri görüntüleyebilirsiniz. Visual Studio'da UE Varlık Denetçisi'ni açmak için C++ sınıfı veya özelliği için Şema başvurusuna çift tıklayın.

  • Uzak bir Linux makinesinde DevContainers çalıştırma etkinleştirildi.

  • CMake Hedefleri görünümünde derlenmek üzere birden çok hedefin seçilmesi etkinleştirildi.

  • CMakePresets.json sürüm 5 için destek eklendi. Yeni özellikler hakkında bilgi için CMake belgelerine bakın.

  • Birden çok CMake hedeflerini paralel olarak derlemek ve test etmek için Test Gezgini etkinleştirildi.

  • Geliştirme Kapsayıcıları'na "Terminalde kapsayıcı aç" seçeneği eklendi.

  • Uygulanan standart kitaplık özellikleri:

    • basic_format_stringP2508R1, format_string,wformat_string
    • ranges::fold_leftP2322R6, ranges::fold_rightvb.
    • views::zip P2321R2 (zip_transform, adjacentve adjacent_transformiçermez)

Visual Studio sürüm 17.4'teki C++ ile ilgili yenilikler

Sürüm 17.4'teki Visual Studio'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.4 Sürüm Notları ve Visual Studio 2022 17.4'teki C++ Geliştiricileri için Yenilikler.

  • Özellikle kavramlar için daha doğru ve kullanışlı bilgiler sağlamak için derleyici hata iletileri geliştirildi.

  • Belirtilen dizine yapılandırılmış SARIF tanılamasını çıkarmak için deneysel MSVC seçeneği /experimental:log<directory> eklendi.

  • IntelliSense'e C23 öznitelikleri için destek eklendi ve C++20 modül desteğinde devam etti.

  • Yeni bir çözüm açılırken dizin oluşturma performansı iyileştirildi. Büyük projeler 17,3'ten %20-35'lik bir iyileştirme görebilir.

  • Geliştirilmiş Adlandırılmış Dönüş Değeri İyileştirmesi (NRVO):

    • NRVO, özel durum işleme veya döngüler içeren durumlar için etkinleştirilir.
    • NRVO, kullanıcı seçeneğini veya daha sonraki /permissive-bir sürümü ya da /std:c++20 seçeneğini geçse /Zc:nrvo bile altında /Od etkinleştirilir.
    • Artık seçeneğiyle NRVO'yi /Zc:nrvo- devre dışı bırakabilirsiniz.
  • Visual Studio ile birlikte gönderilen LLVM sürümünü 15.0.1 sürümüne yükseltti. Sunulanlar hakkında daha fazla bilgi için LLVM ve Clang sürüm notlarına bakın.

  • CMake projeleriyle vcpkg yapıtları için Visual Studio'ya destek eklendi. Vcpkg bildirimi içeren projeler için ortam, proje açıkken otomatik olarak etkinleştirilir. Visual Studio'da vcpkg ortamı etkinleştirme blog gönderisinde bu özellik hakkında daha fazla bilgi edinin.

  • Artık C++ projeleriniz için Geliştirme Kapsayıcıları kullanabilirsiniz. C++ için Geliştirme Kapsayıcıları blog gönderimizde bu özellik hakkında daha fazla bilgi edinin.

  • IntelliSense artık biri PCH olduğunda, önceden oluşturulmuş üst bilgilerin sırasına uyar. Daha önce, aracılığıyla bir PCH kullanıldığında /Yu ve aracılığıyla /FIzorla dahil edildiğinde IntelliSense, aracılığıyla /FIdahil edilen diğer üst bilgilerden önce her zaman önce bunu işlerdi. Bu davranış derleme davranışıyla eşleşmedi. Bu değişiklikle, /FI üst bilgiler belirtilen sırayla işlenir.

  • Test Gezgini'ndeki CTest adlarından iç ön ekler kaldırıldı.

  • Visual Studio ile birlikte gönderilen CMake sürümü 3.24.1 sürümüne güncelleştirildi. Nelerin kullanılabildiğinin ayrıntıları için bkz . CMake sürüm notları.

  • Android SDK güncelleştirmesi:

    • Ant betikleri kaldırıldı, bu nedenle kullanıcılar artık Yeni Proje iletişim kutusunda Ant tabanlı şablonları görmüyor. Ant şablonlarından Gradle şablonlarına geçiş konusunda yardım için bkz . Derlemeleri Apache Ant'tan Geçirme
    • NDK 23 ve 24 ile derleme desteği eklendi
    • NDK bileşeni LTS sürüm 23'e güncelleştirildi
  • , ranges::max_element()ve vektörleştirilmiş uygulamaları ranges::min_element()eklendiranges::minmax_element()

  • C++ standardizasyonundaki en son gelişmeleri izlemeye devam ediyoruz. Bu C++23 özelliklerine yönelik destek, derleyici seçeneklerinize eklenerek /std:c++latest sağlanır:

    • ranges::containsP2302R4,ranges::contains_subrange

    • string_view P2499R0 Aralık Oluşturucu olmalıdırexplicit

    • auto(x)P0849R8: Dilde bozunma kopyası

      (Derleyici bölümü henüz uygulanmadı. Kitaplık bölümü, Aralıklar desteği ilk kez uygulandığında C++20 modunda uygulandı.)

    • P0881R7<stacktrace>

    • P2301R1 için diğer pmr ad eklemestd::stacktrace

    • P1328R1constexpr type_info::operator==()

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

    • P2441R2views::join_with

  • Bildirim/Tanım Oluştur özelliğinin gezinti davranışını seçmenize olanak sağlamak için "Bildirim/Tanım Oluşturduktan Sonra Gezinti" seçeneği eklendi. Göz atma (varsayılan) veya belgeyi açma ya da gezinti olmaması arasında seçim yapabilirsiniz.

  • Visual Studio'nun Arm64 derlemeleri artık CMake ve Ninja'nın Arm64 sürümlerini paketlemektedir.

  • CMake Ön Ayarları sürüm 4 için destek eklendi. Nelerin kullanılabildiğinin ayrıntıları için bkz . CMake sürüm notları.

  • Bağlantı Yöneticisi kullanan uzak sistem bağlantıları artık SSH ProxyJump'ı destekliyor. ProxyJump, bir SSH konağına başka bir SSH konağı üzerinden (örneğin, bir güvenlik duvarının arkasındaki bir konağa erişmek için) erişmek için kullanılır.

Visual Studio sürüm 17.3'teki C++ ile ilgili yenilikler

Sürüm 17.3'teki Visual Studio'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.3 Sürüm Notları ve C++ geliştirmeleri.

  • Arm64EC araç zinciri artık deneysel olarak işaretlenmez ve üretim kullanımına hazırdır.

  • Visual Studio Terminali artık depolanan SSH bağlantılarınızla bir SSH istemcisi olarak kullanılabilir. Linux araçları için C++ yüklü olarak Terminal aracı penceresini açın. Terminal açılan listesi, depolanan bağlantılarınızla doldurulur. Bir bağlantı seçtiğinizde, Visual Studio'da uzak sisteminizde sahte terminal gösteren yeni bir Terminal penceresi açılır. Denetim karakterleri, renkler ve imleç konumsal farkındalığı desteklenir.

  • Visual Studio artık UE projeleriniz için Gerçek Dışı Altyapı sınıf şablonları ekleyebilir. Bu özelliği denemek için Visual Studio Yükleyicisi C++ ile oyun geliştirme iş yükünde Gerçek Dışı Altyapı için IDE desteğinin seçildiğinden emin olun. Bir UE projesi üzerinde çalışırken projeye veya klasöre/filtreye sağ tıklayın ve UE Sınıfı Ekle'yi>seçin.

  • Tanım'a git artık önceki imzayı anımsar ve daha iyi bir eşleşme kullanılamadığında buna göre gezinirken (örneğin, çiftten birinin imzasını el ile değiştirdikten sonra). Tümüne Git'in yanıt hızı iyileştirildi. Daha önce, siz yazmayı durdurduktan sonra sonuçlar görünüyordu. Yeni deneyimde, siz yazarken sonuçlar gösterilir.

  • Tür tamamlama gerektiren enum bağlamlarda (örneğin, değişkenlere enum atamalar, büyük/küçük harf etiketleri, dönüş enum türü vb.), otomatik tamamlama listesi artık yalnızca eşleşen numaralandırıcılara ve ilgili yapılara göre filtrelenmiştir.

  • .NET Core'ı hedefleyen C++/CLI MSBuild projeleri için NuGet PackageReference desteği eklendi. Bu değişiklik, karma kod temellerinin .NET Core'un benimsenmesinin engelini kaldırmak için yapılmıştır. Bu destek, diğer C++ proje türleri veya .NET Framework'i hedefleyen C++ proje türleri için çalışmaz. PackageReference desteğini diğer C++ senaryolarına genişletme planı yoktur. Ekip, MSBuild dışı senaryolar için vcpkg içeren ayrı deneyimler üzerinde çalışıyor ve daha fazla işlevsellik ekliyor.

  • Windows>Seri İzleyici'de Hata Ayıklama>aracılığıyla kullanılabilen ekli geliştirme için bir Seri İzleyici penceresi eklendi.

  • C++ dizin oluşturma 17,2 ile karşılaştırıldığında yaklaşık %66 geliştirildi.

  • Visual Studio ile birlikte gönderilen CMake sürümü 3.23 sürümüne güncelleştirildi. Nelerin kullanılabildiğinin ayrıntıları için CMake 3.23 sürüm notlarına bakın.

  • Visual Studio ile birlikte gönderilen LLVM araçlarının sürümleri v14'e yükseltildi. Sunulanlar hakkında ayrıntılı bilgi için LLVM ve Clang sürüm notlarına bakın.

  • Yan yana Dev 16.11 C++ Araç Takımı 14.29.30145.00 sürümüne güncelleştirildi. Dev 16.11 C++ Araç Takımı'nın en son sürümü, kalan tüm C++20 hata raporlarını düzeltme de dahil olmak üzere önemli hata düzeltmeleri içerir. Dev 16.11'deki C++20 hata raporları da dahil olmak üzere hata düzeltmeleri hakkında daha fazla bilgi için bkz . Visual Studio 2019 sürüm 16.11.14 sürüm notları.

  • C++ modüllerinin düzenleyici içi deneyiminde çeşitli geliştirmeler yapıldı. Deneyimin kalitesini geliştirmek için sürekli çalışıyoruz ancak bunları 17.3'te denemenizi öneririz. Kalan sorunları Geliştirici Topluluğu aracılığıyla bildirin.

Visual Studio sürüm 17.2'deki C++ ile ilgili yenilikler

Sürüm 17.2'de Visual Studio'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.1 Sürüm Notları.

  • seçeneği altında /std:c++latest sağlanan C++23 özelliği için thisderleyici desteği eklendi.

  • ve if constevalC++23 özelliklerithisiçin IntelliSense desteği eklendi.

  • Alt+F1 tuşlarına basarak veya Ctrl tuşlarına iki kez dokunarak satır içi parametre adı ve tür ipucu desteği eklendi. Bu davranış, Araçlar > Seçenekler > Metin Düzenleyicileri > C/C++ > IntelliSense altında özelleştirilebilir.

  • CMake projelerinde C++20 modülleri için deneysel destek eklendi. Bu destek şu anda yalnızca Visual Studio (MSBuild) oluşturucu ile kullanılabilir.

  • 17.1'de, katıştırılmış geliştiriciler için çevre birimi kaydı ve RTOS görünümlerini kullanıma sunuyoruz. 17.2'de kullanılabilirlik geliştirmeleriyle bu görünümlerin özelliklerini geliştirmeye devam ediyoruz:

    • RTOS araç penceresi artık varsayılan olarak gizlenir. RTOS kullanmadığınızda ilgili olmayan hata iletileri içeren bir araç penceresinin gösterilmesini engeller.
    • Araç penceresinde bir RTOS nesnesine çift tıkladığınızda nesne için bir saat eklenir.
    • RTOS araç penceresinde yığın işaretçisi için başlangıç ve bitiş değerlerini seçtiğinizde, bellek penceresinde açılır.
    • Çağrı yığını penceresine cihaz hedefleri için iş parçacığı tanıma özelliği eklendi.
    • Kullanıcılar artık çevre birimlerinin, kayıtların veya alanların yanında bir raptiye simgesi seçerek Bunları Çevre Birimi Görünümü'ne sabitleyebilir.
  • Kalan C++20 hata raporlarının uygulamaları eklendi (geri bağlantı noktası olarak da bilinir). Tüm C++20 özellikleri artık seçeneği altında /std:c++20 kullanılabilir. Uygulanan arka bağlantılar hakkında daha fazla bilgi için Microsoft/STL GitHub deposundaki C++20 Hata Raporları projesine ve MSVC'nin STL Completes /std:c++20 blog gönderisine bakın.

  • Seçeneğin altında bulunan çeşitli C++23 Kitaplığı özellikleri ekledik /std:c++latest . Yeni özellikler hakkında daha fazla bilgi için bkz . STL Deposu değişiklik günlüğü.

  • ekleme grafiğinin derinliğine bağlı olarak ilk C++ dizin oluşturmanın performansı %20'ye kadar geliştirildi.

Visual Studio sürüm 17.1'deki C++ ile ilgili yenilikler

Sürüm 17.1'de Visual Studio'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.1 Sürüm Notları.

  • ile CMakePresets.jsonuzak bir macOS sisteminde CMake projelerini yapılandırmak ve derlemek için yeni bir Önceden Ayarlanmış Yapılandırma şablonu eklenir. Ayrıca, CMake hedeflerini uzak bir macOS sisteminde başlatabilir ve ardından GDB veya LLDB tarafından yedeklenen Visual Studio hata ayıklayıcısında uzaktan hata ayıklayabilirsiniz.
  • Artık LLDB veya GDB ile Visual Studio'dan uzak bir macOS sisteminde çekirdek dökümlerinde hata ayıklayabilirsiniz.
  • Visual Studio ile birlikte gönderilen ve LLVM sürümleri Clang v13'e yükseltilir.
  • Visual Studio'nun CMake tümleştirmesi yalnızca açık çalışma alanının kökünde bir CMakeLists.txt tanımlandığında etkindir. çalışma alanının başka bir CMakeLists.txt düzeyinde tanımlanmışsa Visual Studio'nun CMake tümleştirmesini bir bildirimle etkinleştirmeniz istenir.
  • Windows>Embedded Yazmaçlarında Hata Ayıklama>aracılığıyla sağlanan mikrodenetleyiciler ve gerçek zamanlı işletim sistemleri (RTOS) nesneleri üzerindeki çevre birimi yazmaçlarını incelemenize ve bunlarla etkileşim kurmanıza olanak tanıyan yeni görünümler
  • RTOS projeleri için Windows>RTOS Nesnesinde Hata Ayıklama>aracılığıyla kullanılabilen yeni bir iş parçacığı görünümü eklendi. Daha fazla bilgi için bkz . Visual Studio'da Katıştırılmış Yazılım Geliştirme.

Visual Studio sürüm 17.0'daki C++ ile ilgili yenilikler

Visual Studio'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2022 sürüm 17.0 Sürüm Notları.

  • Visual Studio IDE, devenv.exeartık yerel bir 64 bit uygulamadır.

  • MSVC araç takımı artık hata ayıklama kayıtlarında sha-256 kaynak karması olarak varsayılandır. Daha önce araç takımı varsayılan olarak kaynak karması için MD5 kullanıyordu.

  • v143 derleme araçları artık Visual Studio yükleyicisi aracılığıyla ve tek başına derleme araçlarında kullanılabilir.

Yerel C++ için Çalışırken Yeniden Yükleme

  • C++ için Çalışırken Yeniden Yükleme, çalışan uygulamanızda birçok tür kod düzenlemesi yapmayı ve uygulama yürütmeyi kesme noktası gibi bir şeyle duraklatmaya gerek kalmadan bunları uygulamayı mümkün kılar.

Visual Studio 2022'de, uygulamanızı hata ayıklayıcıda başlattığınızda, uygulamanızı çalışmaya devam ederken değiştirmek için Çalışırken Yeniden Yükleme düğmesini kullanabilirsiniz. Bu deneyim yerel Düzenleme ve Devam Et ile desteklenir. Desteklenen düzenlemeler hakkında daha fazla bilgi için bkz . Düzenle ve Devam Et (C++).

  • Çalışırken Yeniden Yükleme, CMake ve Open Folder projelerini destekler.

WSL2 desteği

  • Artık SSH bağlantısı kurmadan WSL2'de yerel olarak derleyebilir ve hatalarını ayıklayabilirsiniz. Hem platformlar arası CMake projeleri hem de MSBuild tabanlı Linux projeleri desteklenir.

Geliştirilmiş CMake desteği

  • Visual Studio ile birlikte gönderilen CMake sürümü 3.21 sürümüne yükseltildi. Bu sürümde sunulanlar hakkında daha fazla bilgi için bkz . CMake 3.21 sürüm notları.

  • CMake Genel Bakış Sayfaları desteğine CMakePresets.jsongüncelleştirildi.

  • Artık CMake projelerinizi CMake 3.21 ve v3 ile yapılandırabilir ve CMakePresets.json oluşturabilirsiniz.

  • Visual Studio artık içindeki CMakePresets.jsonseçeneğini destekliyorbuildPresets.targets. Bu seçenek, CMake projenizde hedeflerin bir alt kümesini oluşturmanıza olanak tanır.

  • CMake projelerindeki Proje menüsü kolaylaştırılmıştır ve "Önbelleği Sil ve Yeniden Yapılandır" ve "Önbelleği Görüntüle" seçeneklerini kullanıma sunar.

  • /scanDependencies P1689R5'de açıklandığı gibi CMake projeleri için C++20 modül bağımlılıklarını listelemek için derleyici seçeneğini uyguladık. Bu, CMake ile modül tabanlı projeler oluşturmaya yönelik bir destek adımıdır ve bu desteği sonraki sürümlerde tamamlamaya çalışıyoruz.

Standart Kitaplık geliştirmeleri

Standart Kitaplık (STL) iyileştirmeleri burada vurgulanır'ı seçin. Yeni işlevlerin, değişikliklerin, hata düzeltmelerinin ve performans iyileştirmelerinin kapsamlı bir listesi için STL ekibinin Değişiklik Günlüğü'ne bakın.

  • Aşağıdaki türlerin görüntülenme biçimini geliştirmek için hata ayıklama görselleştiricileri eklendi: , , (ve yineleyicileri), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (ve yineleyicisi/sentinel), ranges::ref_view, thread, thread::id, jthreadve u8stringbind_front()source_locationfilesystem::path
  • stoi() ve içindeki <string> işlev ailesine üye işlevleri<locale>, has_facet()ve aileleri gibi collate çeşitli işlevlere isalnum()tolower() eklendi[[nodiscard]].
  • P0980R1 Made std::stringconstexpr in VS 2019 16.10. Artık Clang için destekleniyor.
  • P1004R2 Made std::vectorconstexprin VS 2019 16.10. Artık Clang için destekleniyor.

Vurgulanan C++23 özellikleri

  • P1048R1 Eklendiis_scoped_enum, bir türün kapsamlı bir numaralandırma olup olmadığını algılayan C++ Standart kitaplığı için yeni bir özelliktir.
  • out_ptr()P1132R7,inout_ptr()
  • contains() ve için basic_string P1679R3basic_string_view
  • to_underlying() Numaralandırmalar için P1682R3
  • P2162R2 Devralma izni verstd::variant
  • P2166R1 ve basic_string_view oluşturmasınıbasic_stringnullptryasakla. Bu değişiklik, kaynağı bozan bir değişikliktir. Daha önce çalışma zamanında tanımsız davranış gösteren kod artık derleyici hatalarıyla reddediliyor.
  • P2186R2 Çöp toplama desteği kaldırıldı. Bu değişiklik , , undeclare_reachable, declare_no_pointers, undeclare_no_pointers, get_pointer_safetyöğesini kaldırırdeclare_reachable. Daha önce bu işlevlerin hiçbir etkisi yoktu.

Vurgulanan performans geliştirmeleri

  • <format>şimdi veya vectoriçin basic_string öğesine ne zaman yazılıyor back_insert_iterator olduğunu algılar ve kapsayıcıda end() daha hızlı bir çağrı insert() yapar.
  • ve'nin std::find()std::count() performansını 19x ve 26x (yüzde değil, kat) için vector<bool> geliştirdik.
  • için performansını geliştirdik std::count()vector<bool>
  • std::byte artık ve ile aynı performansa unsigned charreverse() sahiptir variant::swap()

Clang ve LLVM desteği

  • Visual Studio ile birlikte gönderilen LLVM araçları LLVM 12'ye yükseltilir. Daha fazla bilgi için bkz . LLVM sürüm notları.

  • Clang-cl desteği LLVM 12 olarak güncelleştirildi.

  • Artık LLDB kullanarak Visual Studio'dan uzak bir sistemde çalışan işlemlerin hatalarını ayıklayabilirsiniz.

C++ AMP kullanım dışı

  • C++ AMP üst bilgileri artık kullanım dışı bırakılmıştır. C++ projesine dahil <amp.h> olmak derleme hataları oluşturur. Hataları susturmak için tanımlayın _SILENCE_AMP_DEPRECATION_WARNINGS. Daha fazla bilgi için amp kullanımdan kaldırma bağlantılarımıza bakın.

IntelliSense geliştirmeleri

  • İçeri aktarılan Modüller ve Üst Bilgi Birimlerindeki türler için gezinti ve söz dizimi vurgulama özelliği sağlarken C++ IntelliSense'te geliştirmeler yaptık. IntelliSense, bizim için etkin bir yatırım alanıdır. Geliştirmemize yardımcı olun: Geri Bildirim Gönderme Yardımını>kullanarak geri bildiriminizi Geliştirici Topluluğu paylaşın.

  • Önbelleğe alınmış üst bilgi kullanımı ve sembol veritabanı erişimini iyileştirerek C++ IntelliSense performansını iyileştirdik ve kodunuza erişmek için geliştirilmiş yükleme süreleri sağladık.

  • C++ için IntelliSense Kod Linter'i artık varsayılan olarak açıktır ve anında tür olarak öneriler sağlar ve yaygın kod hataları için öneriler düzeltir.

  • CMake projeleri için C++ IntelliSense artık bir görünen adla ön ayar kullanılırken çalışıyor.

C++ İş yükü güncelleştirmeleri

  • C++ Mobil Geliştirme iş yükünde NDK r21 LTS'ye güncelleştirildi.

  • C++ ile oyun geliştirme iş yükü artık Visual Studio 2022 desteğiyle en son Unreal Engine'i yüklüyor.

Kod analizi geliştirmeleri

  • Kod analizi artık ek açıklama ekleyen _Check_return_ veya _Must_inspect_result_ denetlenmesi gereken işlevlerin değerlerini döndürmeyi zorunlu kılacak.

  • Kod çözümleme araçlarımızda null işaretçi başvuru algılama geliştirildi.

  • Kod analizi için gsl::not_null desteği eklendi.

  • Derleyici seçeneği altında /fsanitize=fuzzer Libfuzzer desteği.

Eski sürümler için sürüm notları

Eski C++ sürümleri için sürüm notları da mevcuttur. Visual Studio 2019'da C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual Studio 2019'da C++ için yenilikler. Visual Studio 2017'de C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual Studio 2017'de C++ için yenilikler. Önceki sürümlerdeki yenilikler hakkında bilgi için bkz . Visual C++ Yenilikler 2003 ile 2015 arasında.

Bilinen sorunlar

C++ IntelliSense

Visual Studio 2022'de C++ için diğer açık sorunlar ve kullanılabilir geçici çözümler hakkında daha fazla bilgi için C++ Geliştirici Topluluğu sorunları listesine bakın.

Görüş ve öneriler

Sizden haber almaktan memnun oluruz! Yükleyicinin veya Visual Studio IDE'nin sağ üst köşesindeki Geri Bildirim Gönder simgesini kullanarak veya Geri Bildirim Gönderme Yardımı'ndan Bir>Sorun Bildirebilir veya Özellik Önerebilirsiniz. Visual Studio Geliştirici Topluluğu kullanarak sorunlarınızı izleyebilir ve burada açıklama ekleyebilir veya çözüm bulabilirsiniz. Ayrıca Canlı Sohbet desteğimizden ücretsiz yükleme yardımı alabilirsiniz.

Bloglar

Tüm yeni sürümlerden haberdar olmak için Microsoft Geliştirici Blogları sitesinde sağlanan içgörülerden ve önerilerden yararlanın. Bloglar, çok çeşitli özelliklerle ilgili ayrıntılı gönderiler içerir. C++ Ekip Bloguve Visual Studio Blogu özellikle ilgi çekicidir.