Visual Studio 2019'da C++ ile ilgili yenilikler

Visual Studio 2019, Microsoft C++ ortamına birçok güncelleştirme ve düzeltme getirir. Derleyici ve araçlardaki birçok hatayı ve sorunu düzelttık. Bu sorunların çoğu, Geri Bildirim Gönder altındaki Sorun Bildir ve Öneri Sağla seçenekleri aracılığıyla müşteriler tarafından gönderildi. Hataları bildirdiğiniz için teşekkür ederiz!

Tüm Visual Studio'daki yenilikler hakkında daha fazla bilgi için Visual Studio 2019'daki yenilikler'i ziyaret edin. Visual Studio 2017'de C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual Studio 2017'de C++ için yenilikler. Visual Studio 2015 ve önceki sürümlerde C++ ile ilgili yenilikler hakkında bilgi için bkz . Visual C++ Yenilikler 2003 ile 2015 arasında. Daha fazla bilgi için bkz . Microsoft C++ belgeleri: Yenilikler.

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

Visual Studio sürüm 16.11'deki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.11'deki Yenilikler.

  • Derleyici artık derleyici modunu destekliyor /std:c++20 . Daha önce C++20 özellikleri visual studio 2019'da /std:c++latest yalnızca modda kullanılabilirdi. Başlangıçta gerekli /std:c++latest olan özellikler artık Visual Studio'nun /std:c++20 en son sürümlerinde modda veya daha sonraki sürümlerde çalışır.

  • Visual Studio ile birlikte gönderilen LLVM araçları LLVM 12'ye yükseltildi. Ayrıntılar için bkz . LLVM sürüm notları.

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

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

Visual Studio sürüm 16.10'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.10'daki Yenilikler.

  • Tüm C++20 özellikleri artık altında /std:c++latestkullanılabilir. MSVC'nin C++20 standartlarını uygulaması (şu anda ISO tarafından yayımlandığı gibi) özellik tamamlandıysa da, bazı önemli C++20 kitaplık özelliklerinin, abi uyumsuz bir şekilde değiştirebilecek yaklaşan Hata Raporları (ISO C++20 hata düzeltmeleri) ile değiştirilmesi beklenir. Daha fazla ayrıntı için lütfen Microsoft/STL Sorunu #1814'e bakın.

    • C++20 anında işlevler ve 16.10'da ekli destek
    • Son parçalar <chrono>: yeni saatler, artık saniyeler, saat dilimleri ve ayrıştırma
    • Metin biçimlendirme için uygulaması <format>
  • /openmp:llvm artık x64'e ek olarak x86 ve ARM64'te kullanılabilir

  • Ekleme dizinleri artık özelleştirilmiş derleme uyarı düzeyleri ve kod analizi ayarlarıyla dış olarak belirlenebilir.

  • /await:strict Önceki dil modlarında C++20 stili eş yordamları etkinleştirme seçeneği eklendi.

  • Hata ayıklayıcısı görselleştirmesi std::coroutine_handle<T> şimdi özgün eş yordam işlevi adını ve imzasını ve geçerli askıya alma noktasını görüntüler.

  • CMakePresets desteği eklendi.

  • Artık Visual Studio'da yeni bir uzak bağlantı eklerken sunucu tarafından sunulan ana bilgisayar anahtarı parmak izini kabul etmek veya reddetmek zorundasınız.

  • Uyarı amacıyla dış olarak ele alınması gereken üst bilgileri belirtmek için MSVC'ye bir /external anahtar eklendi.

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

Visual Studio sürüm 16.9'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.9'daki Yenilikler.

  • Adres Dezenfektanı:

    • Windows'ta adres dezenfektanı desteğimiz deneysel moddan çıktı ve genel kullanıma ulaştı.

    • Genişletilmiş RtlAllocateHeap destek, yürütülebilir bellek havuzları oluştururken ve RtlAllocateHeap kesme yollarıyla ilgili bir uyumluluk sorunu RtlCreateHeap düzeltildi.

    • Eski GlobalAlloc ve LocalAlloc bellek işlevleri ailesi için destek eklendi. Ortam bayrağını ASAN_OPTIONS=windows_hook_legacy_allocators=trueayarlayarak bu kesicileri etkinleştirebilirsiniz.

    • Sorunların ve çözümlerinin açıkça görülebilmesi için araya gölge bellek alma ve iletim hatasına işaret eden hata iletileri güncelleştirildi.

    • IDE tümleştirmesi şimdi ASan tarafından raporlanabilen özel durum koleksiyonunun tamamını işleyebiliyor.

    • Derleyici ve bağlayıcı, ASan ile oluşturduğunuzu algılarsa ancak hata ayıklama bilgilerini yaymadığınızı algılarsa hata ayıklama bilgilerini yaymanızı önerir.

  • Artık yeni CL anahtarıyla /openmp:llvmOpenMP çalışma zamanının LLVM sürümünü hedefleyebilirsiniz. Bu, paralel for döngülerde bölümler ve işaretsiz dizin değişkenleri üzerindeki #pragma omp yan tümcesi için lastprivate destek ekler. Anahtar /openmp:llvm şu anda yalnızca amd64 hedefi için kullanılabilir ve hala deneyseldir.

  • Visual Studio CMake projeleri artık uzak Windows geliştirme için birinci sınıf desteğe sahip. Bu destek CMake projesini Windows ARM64'ü hedefleyecek şekilde yapılandırmayı, projeyi uzak Windows makinesine dağıtmayı ve uzak Windows makinesindeki projede Visual Studio'dan hata ayıklaması yapmayı içeriyor.

  • Windows üzerinde Visual Studio ile gönderilen Ninja sürümü 1.10'a güncelleştirildi. Neler içerdiği hakkında daha fazla bilgi için bkz . Ninja 1.10 sürüm notları.

  • Visual Studio ile gönderilen CMake sürümü 3.19'a güncelleştirildi. Neler içerdiği hakkında daha fazla bilgi için bkz . CMake 3.19 sürüm notları.

  • STL'de birçok kilit/koruma türü olarak nodiscardişaretlendi.

  • IntelliSense:

    • IntelliSense'de içeri aktarılan modüllerin ve üst bilgi birimlerinin tamamlanmasını sağlama kararlılığı ve işlevselliği geliştirildi.

    • Modül içeri aktarmalarında Tanıma git, için export {...}dizin oluşturma desteği ve aynı ada sahip modüller için daha doğru modül başvurusu eklendi.

    • C++ IntelliSense'in dil uyumluluğu, başvuru doğrudan başlatma ve , ile __builtin_memmoveişlevleri arasındaki consteval constexpr tutarsızlıkları düzeltme, __builtin_memcpy Sabit ifadelerde yaşam süresi uzatılmış geçiciler ve Benzer türler ve başvuru bağlamada geçici kopya başlatma desteği ekleyerek geliştirildi.

    • make_unique, make_shared, emplace ve emplace_back için belirtilen tür parametresi temelinde tamamlama sağlayan tamamlama işlevselliği eklendi.

  • MSVC artık ikili dosyalarınız için gerekli olan doğru adres temizleyici çalışma zamanlarını belirliyor. Yeni değişiklikler Visual Studio projenize otomatik olarak uygulanacak. Komut satırında adres dezenfektanı kullanırken artık yalnızca derleyiciye geçirmeniz /fsanitize=address yeterlidir.

  • Visual Studio Bağlantı Yöneticisi artık ECDSA ortak anahtar algoritmasını kullanan özel anahtarları destekliyor.

  • 11 sürümüne ait yükleyici ile gelen LLVM ve Clang sürümleri güncelleştirildi. Daha fazla bilgi için LLVM ve Clang sürüm notlarına bakın.

  • Visual Studio artık IntelliSense yapılandırması için araç zinciri dosyalarındaki CMake değişkenlerini kullanacak. Bu, katıştırılmış kaynaklar ve Android geliştirme için daha iyi bir deneyim sunacak.

  • Yıkıcıların ve yeni ifadelerin olmasını constexprsağlayan More Constexpr Kapsayıcıları teklifinin uygulanması. Bu, ve std::stringgibi constexpr std::vector yardımcı programların önünü açar.

  • Tanıma Git, Modüle Git ve üye tamamlaması dahil olmak üzere IntelliSense C++20 modüllerine yönelik genişletilmiş destek.

  • Kısaltılmış işlev şablonları artık MSVC derleyicisinde desteklenmektedir.

Visual Studio sürüm 16.8'de C++ ile ilgili yenilikler

Visual Studio sürüm 16.8'deki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.8'deki Yenilikler.

  • C++20 Coroutines artık (veya /std:c++20 Visual Studio 2019 sürüm 16.11'den başlayarak) ve <coroutine> üst bilgi altında /std:c++latest desteklenmektedir.

  • IntelliSense şimdi C++20 <concepts> ve <ranges> üst bilgileri için destek ve kavram tanımlarına yönelik yeniden adlandırma ve göz atma deneyimi sağlar.

  • STL’miz şimdi C++20 Aralıklarının çoğu için destek sunar.

  • Koşullu basit özel üye işlevleri artık MSVC’de desteklenmektedir.

  • C11 ve C17 artık ve /std:c17 anahtarları altında /std:c11 desteklenmektedir.

  • Ek STL geliştirmeleri, için tam destek ve std::lerp std::execution::unseq, iyileştirmeleri std::reverse_copyve daha fazlasını içerir.std::atomic_refstd::midpoint

  • Visual Studio ile birlikte gelen CMake sürümünü CMake 3.18’e yükselttik.

  • Kod analizi araçlarımız şimdi endüstri standardı statik analiz günlük biçimi olan SARIF 2.1 standardını destekler.

  • Linux projelerinde derleme araçları eksik olduğunda artık araç çubuğunda bir uyarı verilir ve hata listesinde eksik araçların net bir açıklaması sunulur.

  • Artık doğrudan Visual Studio’dan WSL veya uzak bir Linux sisteminde Linux çekirdek dökümlerinin hata ayıklamasını yapabilirsiniz.

  • C++ Doxygen yorum oluşturma için ek açıklama stili seçenekleri (/*! ve //!) ekledik.

  • Ek vcpkg duyuruları.

  • Değerlendirilmemiş bağlamlarda lambdalar için derleyici desteği.

  • /DEBUG:FULL çok iş parçacıklı PDB oluşturma ile bağlantı performansı geliştirildi. Çeşitli büyük uygulamalar ve AAA oyunları bağlantı oluşturmaya kıyasla 2 ila 4 kat daha hızlı görüntüleniyor.

  • Visual Studio hata ayıklayıcısı artık için char8_tdesteğine sahiptir.

  • clang-cl kullanarak ARM64 projelerine yönelik destek eklendi.

  • Intel AMX iç bilgileri desteği.

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

Visual Studio sürüm 16.7'deki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.7'deki Yenilikler.

  • Uzaktan C++ desteğiniz artık sh, csh, bash, tsch, ksh, zsh ve dash dahil olmak üzere daha geniş kapsamlı Linux dağıtımlarını ve kabuklarını destekler. ConnectionManager.exe aracılığıyla yeni "shell" özelliğini değiştirerek uzaktan bağlantı için kabuk seçimini geçersiz kılabilirsiniz. Bu destek hem MSBuild tabanlı Linux projeleri hem de uzak bir Linux sistemini veya WSL’yi hedefleyen CMake projeleri ile test edilmiştir.

  • Şimdi, MSBuild tabanlı Linux projeleri için artımlı derleme sürelerini kısaltmak amacıyla Ninja’yı (artımlı derlemeleri çok hızlı şekilde değerlendiren bir derleme sistemi) kullanabilirsiniz. Genel Özellik Sayfasında "Artımlı Derlemeyi Etkinleştir" seçeneğini "Ninja ile" olarak ayarlayarak bu özelliği kabul edebilirsiniz. Ninja (ninja derlemesi), uzak Linux sisteminizde veya WSL’de yüklü olmalıdır.

  • Yeni C++20 Standart Kitaplık özellikleri uygulandı. Ayrıntılı liste için lütfen GitHub’daki STL Değişim Günlüğü’ne başvurun.

  • Artık Bağlantı Yöneticisi’nde varsayılan uzak SSH bağlantılarını düzenleyip ayarlayabilirsiniz. Bu, var olan bir uzak bağlantıyı düzenleyebileceğiniz (örneğin, IP adresi değiştiyse) ve varsayılan bağlantıları CMakeSettings.json ve launch.vs.json kullanılacak şekilde ayarlayabileceğiniz anlamına gelir. Uzak SSH bağlantıları, doğrudan Visual Studio’dan uzak bir Linux sisteminde C++ projeleri oluşturup bunlarda hata ayıklamanıza olanak verir.

  • Visual Studio’da Windows üzerinde Clang (clang-cl) için geliştirilmiş IntelliSense desteği. Clang ekleme yolunda artık clang kitaplıkları yer alıyor. Standart kitaplığı kullanırken düzenleyicide görüntülenen dalgalı çizgileri iyileştirdik ve clang modundaki C++2a için destek ekledik.

  • Şimdi, kod hatalarının altını çizme özelliğini deneyebilir ve C++ projelerinde daha fazla önerilen hızlı düzeltme görebilirsiniz. Araçlar > Seçenekler Metin Düzenleyicisi > C/C++ > Deneysel altında > bu özelliği etkinleştirin. Deneysel Kod Lintini Devre Dışı Bırak seçeneğini false olarak ayarlayın. C++ Ekip Blogunda daha fazla bilgi edinin.

  • C++'a ek güvenlik özellikleri eklemek için dört yeni kod analizi kuralı ekledik: C26817, C26818, C26819 ve C26820.

  • gdbserver’a sahip uzak sistemlerdeki CMake projelerinde hata ayıklamaya yönelik birinci sınıf destek ekledik.

  • Visual Studio’da C++ için deneysel AddressSanitizer uygulaması sayesinde bellek bozulma hatalarını bulma özelliği artık x64 yerel projeleri için de kullanıma sunuldu. Artık hata ayıklama çalışma zamanlarının (/MTd, /MDd, /LDd) kullanımını da destekliyoruz.

  • IntelliSense'te şimdi Concepts, belirlenen başlatıcılar ve diğer bazı C++20 özellilkeri için temel destek sağlanıyor.

  • .ixx ve .cppm dosyaları artık C++ olarak tanınıyor ve söz dizimi vurgulayıcısı ve IntelliSense tarafından bu şekilde kabul ediliyor.

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

Visual Studio sürüm 16.6'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.6'daki Yenilikler.

  • Geliştirilmiş Doxygen/XML açıklama oluşturma: Yazarak veya yukarıdaki işlevleri kullanarak /// Otomatik olarak Doxygen veya /** XML belge açıklama saplamaları oluşturun. Bunlar artık Hızlı Bilgi araç ipuçlarında da görüntülenir.

  • Linux/WSL için CMake için Ninja desteği: WSL veya uzak bir sistemde CMake projeleri oluştururken temel oluşturucu olarak Ninja kullanın. Yeni bir Linux veya WSL yapılandırması eklenirken kullanılan varsayılan oluşturucu artık Ninja’dır.

  • Uzak CMake hata ayıklaması için hata ayıklama şablonları: Uzak linux sisteminde veya gdb ile WSL'de CMake projelerinde hata ayıklamak için şablonları basitleştirdik.

  • C++20 kavramları için ilk destek: IntelliSense artık C++20 kavramlarını tanır ve bunları üye listesinde önerir.

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

Visual Studio sürüm 16.5'teki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.5'teki Yenilikler.

  • IntelliCode Team Completions modeli ve üye değişkenleri desteği: C++ geliştiricileri artık IntelliCode modellerini kendi kod temellerinde eğitebilir. Takımınızın uygulamalarından faydalandığınız için bu modeli Takım Tamamlamaları modeli olarak adlandırdık. Ayrıca, üye değişkenleri için IntelliCode önerilerini geliştirdik.

  • IntelliSense geliştirmeleri:

    • IntelliSense artık Standart Kitaplık ile ilgilenirken daha okunabilir tür adları görüntüler.
    • Enter, Boşluk ve Sekme işlevinin işleme karakterleri olarak çalışıp çalışmayacağını ve Kod Parçacığı Eklemek için Sekme kullanılıp kullanılmayacağını değiştirme özelliğini ekledik. Bu ayarları Araçlar > Seçenekler Metin Düzenleyicisi > C/C++ > Gelişmiş > IntelliSense altında > bulabilirsiniz.
  • Komut satırı üzerinden Bağlantı Yöneticisi: Artık komut satırı üzerinden depolanan uzak bağlantılarınızla etkileşim kurabilirsiniz. Yeni bir geliştirme makinesi sağlama veya Visual Studio'yu sürekli tümleştirmede ayarlama gibi görevler için kullanışlıdır.

  • WSL için hata ayıklama ve dağıtma: Derleme sisteminizi uzaktan dağıtım sisteminizden ayırmak için Visual Studio'nun WSL için yerel desteğini kullanın. Artık WSL üzerinde yerel olarak derleyebilir ve derleme yapıtlarını hata ayıklama için ikinci bir uzak sisteme dağıtabilirsiniz. Bu iş akışı hem CMake projeleri hem de MSBuild temelli Linux projeleri tarafından desteklenir.

  • FIPS 140-2 uyumluluk modu desteği: Visual Studio artık uzak bir Linux sistemini hedefleyen C++ uygulamaları geliştirirken FIPS 140-2 uyumluluk modunu destekliyor.

  • CMake Dil dosyaları ve daha iyi CMake proje işlemesi için dil hizmetleri:

    • Uzak bir Linux sistemini hedefleyen CMake projelerinin kaynak dosya kopyası iyileştirildi. Visual Studio artık uzaktan kopyalanan kaynakların son kümesine ilişkin “parmak izi dosyası” tutar ve değiştirilen dosya sayısını temel alarak davranışı iyileştirir.

    • Tanıma Git ve Tüm Başvuruları Bul gibi kod gezinti özellikleri artık CMake betik dosyalarındaki işlevler, değişkenler ve hedefler için desteklenmektedir.

    • CMake betiklerinizi el ile düzenlemeden, CMake projelerinizdeki kaynak dosyaları ve hedefleri IDE’de ekleyin, kaldırın ve yeniden adlandırın. Çözüm Gezgini’yle dosyaları eklediğiniz veya kaldırdığınızda, Visual Studio CMake projenizi otomatik olarak düzenleyecek. Ayrıca Çözüm Gezgini’nin Hedefler Görünümünde projenin hedeflerini ekleyebilir, kaldırabilir ve yeniden adlandırabilirsiniz.

  • Linux proje geliştirmeleri: Visual Studio Linux projeleri artık daha doğru IntelliSense'e sahiptir ve uzaktan üst bilgi eşitlemesini projeye göre denetlemenize olanak sağlar.

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

Visual Studio sürüm 16.4'teki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.4'teki Yenilikler.

  • Kod Analizi artık ister Clang ister MSVC araç takımı kullanıyor olun hem MSBuild hem de CMake projelerini yerel olarak destekliyor Clang-Tidy . clang-tidy denetimleri, arka plan kodu analizinin parçası olarak çalıştırılabilir, düzenleyici içi uyarılar (ilişkilendirmeler) olarak görüntülenir ve Hata Listesinde görüntülenir.

  • Visual Studio CMake projeleri artık platformlar arası geliştirmeyi kullanmaya başlamanıza yardımcı olacak Genel Bakış Sayfalarını içeriyor. Dinamik olan bu sayfalar bir Linux sistemine bağlanmanıza ve CMake projenize bir Linux veya WSL yapılandırması eklemenize yardımcı olur.

  • CMake projeleri için başlat açılan menüsü artık en son kullandığınız hedefleri görüntüler ve filtrelenebilir.

  • C++/CLI artık Windows üzerinde .NET Core 3.1 ve üstü ile birlikte çalışma desteği sunuyor.

  • Bellek hatalarının algılanmasına yardımcı olan C++ koduna yönelik çalışma zamanı izleme özeliği için Windows üzerinde MSVC ile derlenen projelerde ASan’ı etkinleştirebilirsiniz.

  • MSVC C++ Standart Kitaplık güncelleştirmeleri:

    • C++17: İlköğretim Dizesi Dönüştürmeleri (charconv) P0067R5 tamamlayarak genel duyarlık uygulandıto_chars(). Bu, C++ 17 Standart’ta tüm kitaplık özelliklerinin uygulanmasını tamamlar.
    • C++20: Kavramları standard_case olarak yeniden adlandırma P1754R1 uygulandı. Bu özellikleri eklemek için derleyici seçeneğini kullanın /std:c++latest (veya /std:c++20 Visual Studio 2019 sürüm 16.11'den başlayarak). Seçenek, C++ Dil Standart özelliği kullanılarak Yapılandırma Özellikleri > C/C++ > Dil proje özelliği sayfasında da ayarlanabilir.
  • C++ Build Insights adlı yeni bir araç koleksiyonu kullanıma sunuldu. Duyuru hakkında daha fazla bilgi için C++ Ekip Blogu'na bakın.

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

Visual Studio sürüm 16.3'teki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.3'teki Yenilikler.

  • C++ geliştiricileri artık Ctrl+K, Ctrl+/ klavye kısayolunu kullanarak satır açıklamalarını değiştirebilir.

  • IntelliSense üye listeleri artık tür niteleyicilerine göre filtrelenir, örneğin, const std::vector artık gibi push_backyöntemleri filtreler.

  • Bu C++20 Standart Kitaplığı özelliklerini ekledik (altında /std:c++latestveya /std:c++20 Visual Studio 2019 sürüm 16.11'den başlayarak):

    • P0487R1: Düzeltmeoperator>>(basic_istream&, CharT*)
    • P0616R0: In Kullanma move()<numeric>
    • P0758R1: is_nothrow_convertible
    • P0734R0: Kavramlar için C++ uzantıları
    • P0898R3: Standart Kitaplık Kavramları
    • P0919R3: Sıralanmamış kapsayıcılar için heterojen arama
  • Yeni "Numaralandırma Kuralları" kural kümesi ve ek const, enumve tür kuralları dahil olmak üzere yeni C++ Temel Yönerge denetimleri.

  • Yeni bir varsayılan anlam renklendirme şeması kullanıcıların kodlarını bir bakışta daha iyi anlamasına olanak tanır. Çağrı yığını penceresi, şablon bağımsız değişkenlerini gizleyecek şekilde yapılandırılabilir ve C++ IntelliCode varsayılan olarak açıktır.

  • CMakeSettings.json veya CppProperties.json dosyalarını veya ayrı hedeflerde “env” etiketini ve launch.vs.json ve tasks.vs.json dosyalarını kullanarak hata ayıklama hedeflerini ve özel görevleri ortam değişkenleriyle yapılandırın.

  • Kullanıcılar, otomatik olarak bir konsol açıp varsayılan vcpkg yüklemesini yüklemek için artık eksik vcpkg paketlerinde hızlı bir eylem kullanabilir.

  • Linux projeleri (CMake ve MSBuild) tarafından yapılan uzak üst bilgi kopyası iyileştirildi ve artık paralel olarak çalışıyor.

  • Visual Studio’nun WSL için yerel desteği artık MSBuild tabanlı Linux projeleri için paralel derlemeyi destekliyor.

  • Kullanıcılar, artık Linux Derleme Görevleri Dosyası projeleri ile bir uzak sisteme dağıtmak için yerel derlemelerin bir listesini belirtebilir.

  • CMake Ayarları Düzenleyicisi’ndeki ayar açıklamaları, artık yararlı belgeler için daha fazla bağlam ve bağlantı içeriyor.

  • IntelliCode için C++ temel modeli artık varsayılan olarak etkindir. Araçlar>Ayarlar>IntelliCode’a giderek bu ayarı değiştirebilirsiniz.

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

Visual Studio sürüm 16.2'deki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.2'deki Yenilikler.

  • Clang ile yapılandırılan yerel CMake projeleri için, Kod Analizi şimdi düzenleyici içinde uyarılar (dalgalı çizgiler) olarak ve Hata Listesinde görüntülenen bir arka plan kod analizinin parçası olarak clang-tidy denetimleri çalıştırır.

  • C++17'deki P0067R5 Temel dize dönüştürmeleri için <charconv> üst bilgisi güncelleştirildi:

    • chars_format::fixed ve chars_format::scientific duyarlığı için kayan nokta to_chars() aşırı yüklemeleri eklendi (chars_format::general precision henüz uygulanmamış olan tek bölümdür)
    • chars_format::fixed en kısa şekilde iyileştirildi
  • Şu C++20 Standart Kitaplığı özellikleri eklendi:

    • Visual Studio 2019 sürüm 16.11'de /std:c++latest (veya /std:c++20 sürümünden başlayarak) kullanılabilir:
      • P0020R6: atomic<floating-point>
      • P0463R1: endian sabit listesi
      • P0482R6: UTF-8 karakterleri ve dizeleri için char8_t türü
      • P0653R2: işaretçiyi ham işaretçiye dönüştürmek için to_address()
    • ve /std:c++latest altında /std:c++17 (veya /std:c++20 Visual Studio 2019 sürüm 16.11'den başlayarak) kullanılabilir:
      • P0600R1: kitaplıkta [[nodiscard]]
    • Koşulsuz kullanılabilir:
      • P0754R2: <version> üst bilgisi
      • P0771R1: std::function taşıma oluşturucusu noexcept olmalıdır
  • Windows SDK’sı artık Windows için CMake ve Linux için CMake bileşenleri için bir bağımlılık değil.

  • C++ bağlayıcısında en büyük giriş için yineleme derleme sürelerini önemli ölçüde iyileştiren geliştirmeler. /DEBUG:FAST ve /INCREMENTAL süreler ortalama olarak iki kat hızlıdır ve /DEBUG:FULL şimdi üç ile altı kat daha hızlıdır.

Visual Studio sürüm 16.1'de C++ ile ilgili yenilikler

Visual Studio sürüm 16.1'deki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.1'deki Yenilikler.

C++ derleyicisi

  • Bu C++20 özellikleri C++ derleyicisinde uygulanmıştır ve /std:c++latest (veya /std:c++20 Visual Studio 2019 sürüm 16.11'den başlayarak):

    • Açık şablon bağımsız değişkenleri (P0846R0) ile işlev çağrısı ifadeleri için bağımsız değişkenler aracılığıyla işlev şablonlarını bulabilme yeteneği artırıldı.
    • Belirli üyelerin, örneğin söz dizimi kullanılarak Type t { .member = expr } toplu başlatmada seçilmesini sağlayan belirlenmiş başlatma (P0329R4).
  • Lambda desteği bakımdan geçirilerek uzun süredir devam eden çok sayıda hata giderildi. Bu değişiklik veya /std:c++latestkullanılırken /std:c++20 varsayılan olarak etkinleştirilir. /std:c++17 Dil modunda ve varsayılan (/std:c++14 ) modunda, yeni ayrıştırıcı Visual Studio 2019 sürüm 16.9 veya sonraki sürümlerde (daha önce Visual Studio 2019 sürüm 16.3'te başlarken /experimental:newLambdaProcessor kullanılabilir) kullanılarak /Zc:lambda etkinleştirilebilir. Örneğin, /std:c++17 /Zc:lambda.

C++ standart kitaplık geliştirmeleri

  • Bu C++20 özellikleri, altında /std:c++latestbulunan C++ Standart Kitaplığı uygulamamıza eklenmiştir:
    • starts_withve ends_with basic_string_viewve içinbasic_string.
    • İlişkili kapsayıcılar için contains.
    • list ve forward_list için remove, remove_if ve unique artık size_type değerini döndürüyor.
    • shift_left ve shift_right<algorithm> üzerine eklendi.

C++ IDE

C++ için IntelliCode

IntelliCode artık C++ iş yüküyle Masaüstü Geliştirme'de isteğe bağlı bir bileşen olarak geliyor. Daha fazla bilgi için bkz . Geliştirilmiş C++ IntelliCode artık Visual Studio 2019 ile birlikte geliyor.

IntelliCode, kullanma olasılığınızın en yüksek olduğu şeyi tamamlama listenizin en üstüne yerleştirmek için kendi kapsamlı eğitimini ve kod bağlamınızı kullanır. Genellikle listede aşağı kaydırma gereksinimini ortadan kaldırır. C++ için IntelliCode, standart kitaplık gibi popüler kitaplıkları kullanırken en fazla yardımı sunar.

Yeni IntelliCode özellikleri (Özel Modeller, C++ desteği ve EditorConfig çıkarımı) varsayılan olarak devre dışı bırakılır. Bunları etkinleştirmek için Araçlar > Seçenekleri > IntelliCode > Genel'e gidin. IntelliCode’un bu sürümünde doğruluk geliştirildi ve boş işlev desteği eklendi. Daha fazla bilgi için bkz . AI Destekli Kod Tamamlama Önerileri IntelliCode aracılığıyla C++'a Geliyor.

Hızlı Bilgi geliştirmeleri

  • Hızlı Bilgi araç ipucu artık düzenleyicinizin anlamsal renklendirmesine saygı gösterir. Ayrıca, üzerine gelinen kod yapısı hakkında bilgi için çevrimiçi belgelerde arama yapacak yeni bir Çevrimiçi Arama bağlantısı vardır. Kırmızı dalgalı kod için Hızlı Bilgi tarafından sağlanan bağlantı, hatayı çevrimiçi olarak arar. Bu şekilde, iletiyi tarayıcınıza yeniden yazmanız gerekmez. Daha fazla bilgi için bkz . Visual Studio 2019'da Hızlı Bilgi Geliştirmeleri: Renklendirme ve Çevrimiçi Arama.

Genel iyileştirmeler

  • Şablon Çubuğu artık kod temelinizdeki şablonun örneklemelerini temel alarak açılır menüyü doldurabilir.

  • vcpkg'nin yükleyebileceği eksik #include yönergeler için ampuller ve CMake find_package yönergesi için kullanılabilir paketlerin otomatik olarak derlenmiş olması.

  • C++ projeleri için Genel Özellik Sayfası yeniden düzenlendi. Bazı seçenekler artık yeni bir Gelişmiş sayfası altında listelenmiştir. Gelişmiş sayfası ayrıca tercih ettiğiniz araç takımı mimarisi, hata ayıklama kitaplıkları, MSVC araç takımı ikincil sürümü ve Unity (jumbo) derlemeleri için yeni özellikler içerir.

CMake desteği

  • Visual Studio ile birlikte gelen CMake sürümünü 3.14'e güncelleştirdik. Bu sürüm, Visual Studio 2019 projelerini ve dosya tabanlı IDE tümleştirme API’leri hedefleyen MSBuild oluşturucuları için yerleşik destek ekler.

  • CMake Ayarlar Düzenleyicisi'ne Linux için Windows Alt Sistemi (WSL) desteği ve mevcut önbelleklerden yapılandırmalar, varsayılan derleme ve yükleme köklerinde yapılan değişiklikler ve Linux CMake yapılandırmalarındaki ortam değişkenleri desteği dahil olmak üzere iyileştirmeler ekledik.

  • Yerleşik CMake komutları, değişkenleri ve özellikleri için tamamlamalar ve hızlı bilgiler dosyalarınızı düzenlemeyi CMakeLists.txt kolaylaştırır.

  • CMake projelerini clang/LLVM ile düzenleme, oluşturma ve hata ayıklama desteğiyle tümleştirdik. Daha fazla bilgi için bkz . Visual Studio'da Clang/LLVM Desteği.

Linux ve Linux için Windows Alt Sistemi

  • Artık Linux ve CMake platformlar arası projelerde AddressSanitizer'ı (ASan) destekliyoruz. Daha fazla bilgi için bkz . Visual Studio 2019'da Linux İş Yükü için AddressSanitizer (ASan).

  • C++'ı Linux için Windows Alt Sistemi (WSL) ile kullanmak için Visual Studio desteğini tümleştirdik. Artık C++ ile yerel Linux için Windows Alt Sistemi (WSL) yüklemenizi ek yapılandırma veya SSH bağlantısı olmadan Visual Studio'da yerel olarak kullanabilirsiniz. Daha fazla bilgi için bkz. Visual Studio 2019 ve Linux için Windows Alt Sistemi (WSL) ile C++ .

Kod Çözümleme

Uzak derlemeler

  • Kullanıcılar hem MSBuild hem de CMake projelerinde Linux’ı hedeflerken uzaktan derleme makinenizi uzaktan hata ayıklama makinelerinden ayırabilir.

  • Uzak bağlantılar için geliştirilmiş günlük kaydı, platformlar arası geliştirmedeki sorunları tanılamayı kolaylaştırır.

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

Visual Studio sürüm 16.0'daki yeni özelliklerin ve hata düzeltmelerinin özeti için bkz . Visual Studio 2019 sürüm 16.0'daki Yenilikler.

C++ derleyicisi

  • C++17 özellikleri ve doğruluk düzeltmeleri için gelişmiş desteğin yanı sıra modüller ve coroutines gibi C++20 özellikleri için deneysel destek. Ayrıntılı bilgi için bkz . Visual Studio 2019'da C++ Uyumluluk Geliştirmeleri.

  • Bu /std:c++latest seçenek artık üç yönlü karşılaştırma için C++20 işleci <=> ("uzay gemisi") için ilk destek de dahil olmak üzere tamamlanmamış C++20 özelliklerini içerir.

  • C++ derleyici anahtarı /Gm artık kullanım dışı bırakıldı. Açıkça tanımlanmışsa derleme betiklerinizde anahtarı devre dışı bırakmayı /Gm göz önünde bulundurun. Ancak, "Uyarıları hata olarak değerlendir" (/WX) kullanılırken hata olarak değerlendirilmediğinden, için /Gmkullanımdan kaldırma uyarısını da güvenle yoksayabilirsiniz.

  • MSVC bayrağı altındaki /std:c++latest C++20 standart taslağından özellikleri uygulamaya başladığından, /std:c++latest artık (tüm aromalar), /ZWve /Gmile /clr uyumsuzdur. Visual Studio 2019'da , /ZWveya /Gm /std:c++14 ile /clrderlenirken veya modlarını kullanın /std:c++17 (ancak önceki madde işaretine bakın).

  • C++ konsol ve masaüstü uygulamaları için önceden derlenmiş üst bilgiler artık varsayılan olarak oluşturulmuyor.

Codegen, güvenlik, tanılama ve sürüm oluşturma

Spectre Variant 1 (CVE-2017-5753) için azaltma yardımı sağlamaya yönelik geliştirilmiş analiz/Qspectre. Daha fazla bilgi için bkz . MSVC'de Spectre Risk Azaltmaları.

C++ standart kitaplık geliştirmeleri

  • Ek C++17 ve C++20 kitaplık özelliklerinin uygulanması ve doğruluk düzeltmeleri. Ayrıntılı bilgi için bkz . Visual Studio 2019'da C++ Uyumluluk Geliştirmeleri.

  • Clang-Format, daha iyi okunabilirlik için C++ standart kitaplık üst bilgilerine uygulandı.

  • Visual Studio artık C++ için Just My Code'u desteklediğinden, standart kitaplığın artık ve için özel makineler std::function sağlaması ve std::visit aynı etkiyi elde etmesi gerekmez. Bu makinelerin kaldırılması büyük ölçüde kullanıcı tarafından görünür bir etkiye sahip değildir. Bunun bir istisnası, derleyicinin artık veya 16707566 15732480 satırda sorunları gösteren tanılamalar üretmeyecek olmasıdır <type_traits> <variant>.

Derleyicide ve standart kitaplıkta performans/aktarım hızı geliştirmeleri

  • Bağlayıcının Dosya G/Ç'yi işleme şekli ve PDB türü birleştirme ve oluşturmada bağlantı süresi dahil olmak üzere işleme hızı geliştirmeleri oluşturun.

  • OpenMP SIMD vektörleştirmesi için temel destek eklendi. Yeni derleyici anahtarını /openmp:experimentalkullanarak etkinleştirebilirsiniz. Bu seçenek, ile ek açıklamalı #pragma omp simd döngülerin vektörleştirilme olasılığına olanak tanır. Vektörleştirme garanti edilmediğinden, ek açıklamalı ancak vektörleştirilmemiş döngülerde bir uyarı bildirilir. SIMD yan tümceleri desteklenmez; yoksayılır ve bir uyarı bildirilir.

  • 'nin daha agresif bir sürümü /Ob2olan yeni bir satır içi komut satırı anahtarı /Ob3eklendi. /O2 (ikiliyi hız için en iyi duruma getirme) yine de varsayılan olarak anlamına gelir /Ob2 . Derleyicinin yeterince agresif bir şekilde satır içi olmadığını fark ederseniz, geçirmeyi /O2 -Ob3göz önünde bulundurun.

  • Kısa Vektör Matematik Kitaplığı (SVML) iç işlevleri için destek ekledik. Bu işlevler 128 bit, 256 bit veya 512 bit vektör eşdeğerlerini hesaplar. Bunları matematik kitaplığı işlevlerine yapılan çağrılar ve tamsayı bölme gibi diğer bazı işlemler ile döngülerin el vektörleştirmesini destekleyecek şekilde ekledik. Desteklenen işlevlerin tanımları için Intel Intrinsic Guide belgesine bakın.

  • Yeni ve geliştirilmiş iyileştirmeler:

    • Hem float hem de integer formları için SIMD vektör iç bilgileri kullanan ifadeler için sabit katlama ve aritmetik basitleştirmeler.

    • Her zaman doğru veya yanlış olduğu kanıtlanmış dalları kaldırmak için denetim akışından (if/else/switch deyimleri) bilgi ayıklamaya yönelik daha güçlü bir analiz.

    • SSE2 vektör yönergelerini kullanmak için geliştirilmiş memset kaydı kaldırma.

    • Özellikle değere göre geçen C++ programları için gereksiz yapı/sınıf kopyalarının kaldırılması iyileştirildi.

    • veya std::vector ve std::string oluşturma gibi std::copy kullanarak memmovekod iyileştirmesi iyileştirildi.

  • Standart kitaplığın parçalarının doğrudan dahil edilmemesi için standart kitaplık fiziksel tasarımı iyileştirildi. Bu değişiklik, yalnızca <vector> ikiye bölünen boş bir dosyanın derleme süresini keser. Sonuç olarak, daha önce dolaylı olarak eklenmiş üst bilgiler için yönergeler eklemeniz #include gerekebilir. Örneğin, kullanan std::out_of_range kodun artık eklemesi #include <stdexcept>gerekebilir. Akış ekleme işleci kullanan kodun artık eklemesi #include <ostream>gerekebilir. Bunun avantajı, yalnızca veya bileşenlerini kullanan <stdexcept> <ostream> çeviri birimlerinin bunları derlemek için aktarım hızı maliyetini ödemesidir.

  • if constexpr daha iyi aktarım hızı için standart kitaplıkta daha fazla yere uygulandı ve kopyalama işlemlerinde kod boyutu azaltıldı, ters ve döndürme gibi permütasyonlarda ve paralel algoritmalar kitaplığında uygulandı.

  • Standart kitaplık artık C++14 modunda bile derleme sürelerini azaltmak için dahili olarak kullanıyor if constexpr .

  • Paralel algoritmalar kitaplığı için çalışma zamanı dinamik bağlama algılaması artık işlev işaretçisi dizisini depolamak için sayfanın tamamını kullanmıyor. Bu belleği salt okunur olarak işaretlemek artık güvenlik amacıyla uygun değildi.

  • std::thread Oluşturucu artık iş parçacığının başlamasını beklemez ve artık temel alınan C kitaplığı _beginthreadex ile sağlanan çağrılabilen nesne arasına çok fazla işlev çağrısı katmanı eklemez. Daha önce std::thread ve sağlanan çağrılabilen nesnesi arasına _beginthreadex altı işlev yerleştirmişti. Bu sayı yalnızca üçe düşürüldü ve bunlardan ikisi yalnızca std::invoke. Bu değişiklik, sistem saatinin oluşturulduğu anda değişmesi durumunda oluşturucunun std::thread yanıt vermeyi durduracağı belirsiz zamanlama hatasını std::thread da çözer.

  • uygularken std::hash<std::filesystem::path>sunduğumuz performans regresyonu std::hash düzeltildi.

  • Standart kitaplık artık doğruluğa ulaşmak için çeşitli yerlerdeki catch blokları yerine yıkıcıları kullanıyor. Bu değişiklik hata ayıklayıcı etkileşiminin daha iyi olmasına neden olur: Etkilenen konumlarda standart kitaplıktan attığınız özel durumlar artık yeniden oluşturmamız yerine özgün oluşturma sitelerinden oluşturuldu olarak gösteriliyor. Tüm standart kitaplık yakalama blokları ortadan kaldırılmamıştı. MSVC'nin sonraki sürümlerinde catch bloklarının sayısının azaltılmasını bekliyoruz.

  • bir işlevin std::bitset içindeki noexcept koşullu bir oluşturmanın neden olduğu suboptimal codegen, atma yolunun factoring tarafından düzeltildi.

  • std::list ve std::unordered_* ailesi, daha fazla yerde dahili olarak hata ayıklaması olmayan yineleyiciler kullanır.

  • Birkaç std::list üye, liste düğümlerini serbest bırakma ve yeniden konumlandırma yerine mümkün olduğunda yeniden kullanacak şekilde değiştirildi. Örneğin, zaten 3 boyutuna sahip olan bir list<int> assign(4, 1729) çağrı, ilk üç liste düğümündeki değerlerin int üzerine yazılır ve 1729 değerine sahip bir yeni liste düğümü ayırır.

  • için tüm standart kitaplık çağrıları erase(begin(), end()) olarak clear()değiştirildi.

  • std::vector artık belirli durumlarda öğeleri daha verimli bir şekilde başlatır ve siler.

  • Daha iyileştirici dostu hale getirmek için std::variant yapılan iyileştirmeler, daha iyi oluşturulmuş kodlara neden olur. Kod inlining artık ile std::visitçok daha iyi.

C++ IDE

Live Share C++ desteği

Live Share artık C++'ı destekleyerek Visual Studio veya Visual Studio Code kullanan geliştiricilerin gerçek zamanlı işbirliği yapmasına olanak sağlıyor. Daha fazla bilgi için bkz . C++için Canlı Paylaşım Duyuruları: Gerçek Zamanlı Paylaşım ve İşbirliği

Şablon IntelliSense

Şablon Çubuğu artık kalıcı bir pencere yerine Göz Atma Penceresi kullanıcı arabirimini kullanır, iç içe şablonları destekler ve varsayılan bağımsız değişkenleri Göz Atma Penceresi'ne önceden doldurur. Daha fazla bilgi için bkz . Visual Studio 2019 Preview 2 için Şablon IntelliSense Geliştirmeleri. Şablon Çubuğu'ndaki En Son Kullanılanlar açılan listesi, önceki örnek bağımsız değişkenler arasında hızla geçiş yapmanızı sağlar.

Yeni Başlangıç penceresi deneyimi

IDE başlatılırken yeni bir Başlangıç penceresi görüntülenir. Son projeleri açma, kaynak denetiminden kod kopyalama, yerel kodu çözüm veya klasör olarak açma veya yeni bir proje oluşturma seçenekleri vardır. Yeni Proje iletişim kutusu da arama öncelikli, filtrelenebilir bir deneyime dönüştürülmüştür.

Bazı proje şablonları için yeni adlar

Güncelleştirilmiş Yeni Proje iletişim kutusuna sığacak şekilde çeşitli proje şablonu adlarını ve açıklamalarını değiştirdik.

Çeşitli üretkenlik geliştirmeleri

Visual Studio 2019, kodlamayı daha kolay ve sezgisel hale getirmeye yardımcı olacak aşağıdaki özellikleri içerir:

  • Aşağıdakiler için hızlı düzeltmeler:
    • Eksik ekleme #include
    • NULL - nullptr
    • Eksik noktalı virgül ekleme
    • Eksik ad alanını veya kapsamı çözme
    • Hatalı dolaylı işlenenleri (* yerine & ve & yerine *) değiştirin
  • Kapatma ayracı üzerine gelerek bir blok için Hızlı Bilgi
  • Üst Bilgi / Kod Dosyasına Göz Atın
  • Tanım'a #include gidin, dosyayı açar

Daha fazla bilgi için bkz . Visual Studio 2019 Preview 2'de C++ Üretkenlik Geliştirmeleri.

CMake desteği

  • CMake 3.14 desteği

  • Visual Studio artık CMakeGUI gibi dış araçlar tarafından oluşturulan mevcut CMake önbelleklerini, özelleştirilmiş meta derleme sistemlerini veya cmake.exe kendilerini çağıran derleme betiklerini açabilir.

  • Geliştirilmiş IntelliSense performansı.

  • Yeni ayarlar düzenleyicisi, CMakeSettings.json dosyasını el ile düzenlemeye bir alternatif sağlar ve CMakeGUI ile biraz eşlik sağlar.

  • Visual Studio, Linux makinenizde uyumlu bir CMake sürümü olup olmadığını algılayarak Linux üzerinde CMake ile C++ geliştirmenizin önyüklemesine yardımcı oluyor. Uyumlu bir sürüm yoksa, sizin için yüklemeyi öneriyor.

  • Eşleşmeyen mimariler veya uyumsuz CMake oluşturucu ayarları gibi CMakeSettings'teki uyumsuz ayarlar, JSON düzenleyicisinde dalgalı çizgiler ve hata listesinde hatalar gösterir.

  • vcpkg integrate install çalıştırıldıktan sonra IDE'de açılmış olan CMake projeleri için vcpkg araç zinciri otomatik olarak algılanıyor ve etkinleştiriliyor. Bu davranış, CMakeSettings'de boş bir araç zinciri dosyası belirtilerek kapatılabilir.

  • CMake projeleri artık varsayılan olarak Yalnızca Kendi Kodum hata ayıklamasını etkinleştiriyor.

  • Statik analiz uyarıları artık arka planda işlenir ve CMake projeleri için düzenleyicide görüntülenir.

  • CMake projeleri için 'begin' ve 'end' iletilerini daha net derleyin ve yapılandırın ve Visual Studio'nun derleme ilerleme kullanıcı arabirimi için destek sağlayın. Buna ek olarak, Artık Çıkış Penceresi'nde CMake derleme ve yapılandırma iletilerinin ayrıntı düzeyini özelleştirmek için Araçlar > Seçenekleri'nde bir CMake ayrıntı ayarı vardır.

  • Bu cmakeToolchain ayar artık CMakeSettings.json'da CMake komut satırını el ile değiştirmeden araç zincirlerini belirtmek için desteklenmektedir.

  • Ctrl+Shift+B yeni bir Tümünü Derle menü kısayolu.

IncrediBuild tümleştirmesi

IncrediBuild, C++ iş yüküyle Masaüstü geliştirmesinde isteğe bağlı bir bileşen olarak bulunur. IncrediBuild Derleme İzleyicisi, Visual Studio IDE ile tamamen tümleşiktir. Daha fazla bilgi için bkz . IncrediBuild'in Derleme İzleyicisi ve Visual Studio 2019 ile derlemenizi görselleştirme.

Hata ayıklama

  • Windows üzerinde çalışan C++ uygulamaları için PDB dosyaları artık ayrı bir 64 bit işlemle yüklenir. Bu değişiklik, hata ayıklayıcının yetersiz belleğinden kaynaklanan bir dizi kilitlenmeyi giderir. Örneğin, çok sayıda modül ve PDB dosyası içeren uygulamalarda hata ayıklarken.

  • Arama watch, autos ve locals pencerelerinde etkinleştirilir.

C++ ile Windows masaüstü geliştirme

  • Bu C++ ATL/MFC sihirbazları artık kullanılamaz:

    • ATL COM+ 1.0 Bileşeni Sihirbazı
    • ATL Active Server Pages Bileşen Sihirbazı
    • ATL OLE DB Sağlayıcısı Sihirbazı
    • ATL Özellik Sayfası Sihirbazı
    • ATL OLE DB Tüketicisi Sihirbazı
    • MFC ODBC Tüketicisi
    • ActiveX denetiminden MFC sınıfı
    • Tür Lib'den MFC sınıfı.

    Bu teknolojiler için örnek kod Microsoft Learn'de ve VCSamples GitHub deposunda arşivlenir.

  • Windows 8.1 Yazılım Geliştirme Seti (SDK) artık Visual Studio yükleyicisinde kullanılamaz. C++ projelerinizi en son Windows SDK'sına yükseltmenizi öneririz. 8.1'e katı bir bağımlılığınız varsa, bunu Windows SDK arşivinden indirebilirsiniz.

  • En son C++ araç takımında artık Windows XP hedeflemesi sağlanmıyor. VS 2017 düzeyinde MSVC derleyicisi ve kitaplıklarıyla XP hedeflemesi hala desteklenmektedir ve "Tek tek bileşenler" aracılığıyla yüklenebilir.

  • Belgelerimizde şu anda Visual C++ Çalışma Zamanı dağıtımı için Modülleri Birleştirme kullanımı hiç önerilmiyor. MSM'lerimizi kullanım dışı olarak işaretlemenin ek adımını atıyoruz. VCRuntime merkezi dağıtımınızı MSM'lerden yeniden dağıtılabilir pakete geçirmeyi göz önünde bulundurun.

C++ ile mobil geliştirme (Android ve iOS)

C++ Android deneyimi artık varsayılan olarak Android SDK 25 ve Android NDK 16b olur.

Clang/C2 platform araç takımı

Clang/C2 deneysel bileşeni kaldırıldı. ve /std:c++17ile /permissive- tam C++ standartları uyumluluğu için MSVC araç takımını veya Windows için Clang/LLVM araç zincirini kullanın.

Kod analizi

Birim testi

Yönetilen C++ Test Projesi şablonu artık sağlanmıyor. Yönetilen C++ Test çerçevesini mevcut projelerinizde kullanmaya devam edebilirsiniz. Yeni birim testleri için Visual Studio'nun şablon (MSTest, Google Test) veya Yönetilen C# Test Projesi şablonu sağladığı yerel test çerçevelerinden birini kullanmayı göz önünde bulundurun.