/std (Dil Standart Sürümünü Belirtin)

C veya C++ dil standardının belirtilen sürümünden desteklenen C ve C++ dil özelliklerini etkinleştirin.

Sözdizimi

/std:c++14
/std:c++17
/std:c++20
/std:c++latest
/std:c11
/std:c17
/std:clatest

Açıklamalar

Seçenekler /std Visual Studio 2017 ve sonraki sürümlerde kullanılabilir. Kodunuzun derlenmesi sırasında etkinleştirilen sürüme özgü ISO C veya C++ programlama dili standart özelliklerini denetlemek için kullanılır. Seçenekler, belirli yeni dil ve kitaplık özellikleri için desteği devre dışı bırakmanıza olanak sağlar: dil standardının belirli bir sürümüne uyan mevcut kodunuzu bozabilecek özellikler.

Visual Studio 2017 ve sonraki sürümlerindeki Microsoft C++ derleyicisi, C++14 (/std:c++14) öncesi C++ standart modlarını desteklemez. Böyle bir destek planlanmıyor. Kusurlu bir geçici çözüm olarak, sonraki standartlardan özellikleri uygulamayan eski Visual C++ derleyici araç kümelerini kullanmak mümkündür. Visual Studio'da eski derleyici araç kümelerini yükleme ve kullanma hakkında daha fazla bilgi için bkz . Eski projeler oluşturmak için Visual Studio'da yerel çoklu hedefleme kullanma.

C++ standartları desteği

/std C++ derlemesi sırasında geçerli olan seçenek, önişlemci makrosunun _MSVC_LANG kullanımıyla algılanabilir. Daha fazla bilgi için bkz . Önişlemci Makroları.

Önemli

Var olan bazı kodlar makronun __cplusplus 199711Ldeğerine bağlı olduğundan, ayarlayarak /Zc:__cplusplusaçıkça kabul etmediğiniz sürece MSVC derleyicisi bu makronun değerini değiştirmez. ve /std uygun değere ayarlanacağı __cplusplus seçeneği belirtin/Zc:__cplusplus.

/std:c++14
seçeneği /std:c++14 , MSVC derleyicisi tarafından uygulanan C++14 standardına özgü özellikleri etkinleştirir. Bu seçenek, C++ olarak derlenen kod için varsayılan seçenektir. Visual Studio 2015 Güncelleştirme 3'te kullanıma sunulmuştur.

Bu seçenek, dil standardının daha yeni sürümlerinde değiştirilen veya yeni olan özellikler için derleyici ve standart kitaplık desteğini devre dışı bırakır. Ancak, MSVC derleyicisinin önceki sürümlerinde zaten uygulanmış olan bazı C++17 özelliklerini devre dışı bırakmaz. Daha fazla bilgi için bkz . Microsoft C/C++ dil uyumluluğu. Tablolar, belirttiğinizde /std:c++14hangi C++17 özelliklerinin etkinleştirildiğini gösterir.

Visual Studio 2015 Güncelleştirme 2'de veya öncesinde sağlanan özelliklere bağımlılıkları almış olan kullanıcılar için hataya neden olan değişiklikleri önlemek için seçenek belirtildiğinde aşağıdaki özellikler etkin /std:c++14 kalır:

/std:c++17
seçeneği /std:c++17 , C++17 standardına özgü özellikleri ve davranışı etkinleştirir. MSVC derleyicisi tarafından uygulanan C++17 özelliklerinin tamamını etkinleştirir. Bu seçenek, C++17'den sonra yeni veya değiştirilen özellikler için derleyici ve standart kitaplık desteğini devre dışı bırakır. C++ Standart ve Çalışma Taslağı sürümlerinde C++17 sonrası değişiklikleri özellikle devre dışı bırakır. C++ Standardının geçmişe dönük hata güncelleştirmelerini devre dışı bırakmaz. Bu seçenek Visual Studio 2017 sürüm 15.3'den itibaren kullanılabilir.

MSVC derleyici sürümüne veya güncelleştirme düzeyine bağlı olarak, seçeneği belirttiğinizde /std:c++17 C++17 özellikleri tam olarak uygulanamayabilir veya tam olarak uyumlu olmayabilir. Visual C++ dilinde yayın sürümüne göre C++ dil uyumluluğuna genel bakış için bkz . Microsoft C/C++ dil uyumluluğu.

/std:c++20
seçeneği /std:c++20 , C++20 standardına özgü özellikleri ve davranışı etkinleştirir. Visual Studio 2019 sürüm 16.11'den itibaren kullanılabilir, MSVC derleyicisi tarafından uygulanan C++20 özelliklerinin tamamını etkinleştirir. Visual Studio 2022 sürüm 17.0'ın, C++20 <chrono> biçimlendirme uzantılarını ve Standart'ın yayımlanmasından /std:c++20 <ranges> hemen sonra bu özelliklerde geç hataya neden olan değişiklikler nedeniyle aralık fabrikalarını ve aralık bağdaştırıcılarını desteklemediğini std::formatunutmayın.

seçeneği, /std:c++20 C++20'den sonra yeni veya değiştirilen özellikler için derleyici ve standart kitaplık desteğini devre dışı bırakır. C++ Standart ve Çalışma Taslağı sürümlerinde C++20 sonrası değişiklikleri özellikle devre dışı bırakır. C++ Standardının geçmişe dönük hata güncelleştirmelerini devre dışı bırakmaz.

seçeneği /std:c++20 ile /permissiveaçıkça geçersiz kılınmadığı sürece tarafından /permissive- sağlanan standart uyumluluk modunu etkinleştirir.

/std:c++latest
seçeneği, /std:c++latest bir sonraki taslak standart için önerilen tüm geçerli derleyici ve standart kitaplık özelliklerinin yanı sıra devam eden ve deneysel özellikler sağlar. Bu seçenek Visual Studio 2015 Güncelleştirme 3'te başlayarak kullanılabilir.

MSVC derleyici sürümüne veya güncelleştirme düzeyine bağlı olarak, C++17, C++20 veya önerilen C++23 özellikleri, seçeneği belirttiğinizde /std:c++latest tam olarak uygulanamayabilir veya tam olarak uyumlu olmayabilir. En yüksek standart uyumluluğu için Visual Studio'nun en son sürümünü kullanmanızı öneririz. Visual C++ dilinde yayın sürümüne göre C++ dili ve kitaplık uyumluluğuna genel bakış için bkz . Microsoft C/C++ dil uyumluluğu.

Visual Studio 2019'un sürüm 16.11'den önceki sürümlerinde, /std:c++latest C++20'nin tüm derleyici ve standart kitaplık özelliklerini etkinleştirmek için gereklidir.

Visual Studio 2019 sürüm 16.8'den bu yana, /std:c++latest seçeneği ile /permissiveaçıkça geçersiz kılınmadığı sürece tarafından /permissive- sağlanan standart uyumluluk modunu etkinleştirmiştir.

Desteklenen dil ve kitaplık özelliklerinin listesi için bkz . Visual Studio'da C++ için Yenilikler.

seçeneği /std:c++latest , anahtar tarafından /experimental korunan özellikleri etkinleştirmez, ancak bunları etkinleştirmek için gerekli olabilir.

Not

tarafından /std:c++latest etkinleştirilen derleyici ve kitaplık özellikleri gelecekteki bir C++ standardında görünebilir. Onaylanmamış özellikler, bildirimde bulunmadan hataya neden olan değişikliklere veya kaldırma işlemlerine tabidir ve olduğu gibi sağlanır.

C standartları desteği

Veya /Tcderleyici seçeneğini kullanarak Microsoft C derleyicisini /TC çağırabilirsiniz. Bir veya /Tp seçeneği tarafından geçersiz kılınmadığı /TP sürece, dosya uzantısına sahip .c kod için varsayılan olarak kullanılır. Varsayılan C derleyicisi (yani, belirtilmediğinde veya /std:c17 belirtilmediğinde /std:c11 derleyici) ANSI C89 uygular, ancak bazıları ISO C99'un parçası olan birkaç Microsoft uzantısı içerir. C89'a yönelik bazı Microsoft uzantıları derleyici seçeneği kullanılarak /Za devre dışı bırakılabilir, ancak diğerleri etkin durumda kalır. Katı C89 uyumluluğu belirtmek mümkün değildir. Derleyici C99'un birkaç gerekli özelliğini uygulamaz, bu nedenle C99 uyumluluğunun da belirtilmesi mümkün değildir.

/std:c11
bu /std:c11 seçenek ISO C11 uyumluluğu sağlar. Visual Studio 2019 sürüm 16.8'den itibaren kullanılabilir.

/std:c17
bu /std:c17 seçenek ISO C17 uyumluluğu sağlar. Visual Studio 2019 sürüm 16.8'den itibaren kullanılabilir.

Bu standartları desteklemek için yeni ön işlemci gerektiğinden /std:c11 ve /std:c17 derleyici seçenekleri seçeneği otomatik olarak ayarlar /Zc:preprocessor . C11 veya C17 için geleneksel (eski) ön işlemciyi kullanmak istiyorsanız, derleyici seçeneğini açıkça ayarlamanız /Zc:preprocessor- gerekir. Seçeneğin /Zc:preprocessor- ayarlanması beklenmeyen davranışlara yol açabilir ve önerilmez.

Not

Sürüm sırasında ve Visual Studio 2019 sürüm 16.10 aracılığıyla, Visual Studio tarafından yüklenen Windows SDK ve UCRT kitaplıkları henüz C11 ve C17 kodunu desteklemez. Windows SDK ve UCRT'nin güncelleştirilmiş bir sürümü gereklidir. Daha fazla bilgi ve yükleme yönergeleri için bkz . Visual Studio'da C11 ve C17 desteğini yükleme.

veya /std:c17belirttiğinizde /std:c11 MSVC, standartların gerektirdiği tüm C11 ve C17 özelliklerini destekler. /std:c11 ve /std:c17 derleyici seçenekleri şu işlevler için destek sağlar:

IDE, kaynak dosyalarınızın dosya .c uzantısı olduğunda veya veya /Tc derleyici seçeneğini belirttiğinizde IntelliSense için C ayarlarını ve kod vurgulama özelliğini /TC kullanır. Şu anda C dilindeKi IntelliSense, _Alignof_Noreturnve _Static_assertanahtar sözcüklerini _Alignasvurgular, ancak standart üst bilgilerde tanımlanan eşdeğer makroları vurgulamaz: alignas, alignof, noreturnve static_assert.

C17 büyük ölçüde ISO C11'in hata düzeltme sürümü olduğundan, C11 için MSVC desteği zaten tüm ilgili hata raporlarını içerir. C11 ve C17 sürümleri arasında makro dışında __STDC_VERSION__ hiçbir fark yoktur. C11 ve 201710L C17 için olarak genişler201112L.

Derleyici, ISO C11'in isteğe bağlı özelliklerinin çoğunu desteklemez. C11'in bu isteğe bağlı özelliklerinden bazıları, MVC'nin mimari nedenlerle uygulamadığı C99'un gerekli özellikleriydi. Tek tek özellikler için derleyici destek düzeylerini algılamak için gibi __STDC_NO_VLA__ özellik testi makrolarını kullanabilirsiniz. C'ye özgü önceden tanımlanmış makrolar hakkında daha fazla bilgi için bkz . Önceden tanımlanmış makrolar.

  • Uyumlu çoklu iş parçacığı, atomik veya karmaşık sayı desteği yoktur.

  • aligned_alloc Windows yığın uygulaması nedeniyle destek eksik. Alternatif olarak kullanabilirsiniz _aligned_malloc.

  • Hata raporu 400 desteği şu anda için belirlenemedi realloc çünkü bu değişiklik ABI'yi bozacak.

  • Değişken uzunluk dizisi (VLA) desteği planlanmıyor. VLA'lar, kullanım dışı bırakılan ve kaldırılması planlanan ile karşılaştırılabilir getssaldırı vektörleri sağlar.

/std:clatest
seçeneği /std:clatest , C++ derleyicisi /std:c++latest için anahtar gibi davranır. Anahtar, bir sonraki taslak C standardı için önerilen geçerli olan tüm derleyici ve standart kitaplık özelliklerinin yanı sıra devam eden ve deneysel bazı özellikleri etkinleştirir.

Daha fazla bilgi için Microsoft C/C++ dil uyumluluğunun C Standart kitaplık özellikleri bölümüne bakın.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için

  1. Projenin Özellik Sayfaları iletişim kutusunu açın. Daha fazla bilgi için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.

  2. Yapılandırma Özellikleri>C/C++>Dil özellik sayfasını seçin.

  3. C++ Dil Standardı'nda (veya C, C Dil Standardı için), açılan denetimden destekleyebileceğiniz dil standardını seçin, sonra da değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.

Ayrıca bkz.

/Zc:__cplusplus[-]
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi