/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
199711L
değerine bağlı olduğundan, ayarlayarak /Zc:__cplusplus
açı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++14
hangi 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:
auto
Braced-init listeleriyle ilgili kurallartypename
şablon şablonu-parametrelerinde- Trigraflar kaldırılıyor
- Ad alanları ve numaralandırıcılar için öznitelikler
- u8 karakter değişmez değerleri
/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::format
unutmayı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 /permissive
açı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 /permissive
açı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 /Tc
derleyici 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:c17
belirttiğ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:
_Noreturn
ve <stdnoreturn.h>_Alignas
<ve_Alignof
stdalign.h>_Generic
ve <tgmath.h>
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
_Noreturn
ve _Static_assert
anahtar sözcüklerini _Alignas
vurgular, ancak standart üst bilgilerde tanımlanan eşdeğer makroları vurgulamaz: alignas
, alignof
, noreturn
ve 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
gets
saldı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
Projenin Özellik Sayfaları iletişim kutusunu açın. Daha fazla bilgi için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>Dil özellik sayfasını seçin.
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