Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
C++17 standardı, için bir diğer ad oluştururthrow(), kaldırır throw()type-listve throw(...)bazı türlerin içermesine noexceptizin verir.noexcept Bu değişiklik, kodda C++14 veya önceki sürümlere uygun bir dizi kaynak uyumluluğu sorununa neden olabilir. /Zc:noexceptTypes seçeneği C++17 standardına uyumluluğu belirtir. /Zc:noexceptTypes- , kod C++17 modunda derlendiğinde C++14 ve önceki davranışlara izin verir.
Sözdizimi
/Zc:noexceptTypes[-]
Açıklamalar
Seçenek belirtildiğinde/Zc:noexceptTypes, derleyici C++17 standardına uyar ve için noexceptbir diğer ad olarak davranırthrow(), throw()type-listve throw(...)kaldırır ve bazı türlerin içermesine noexceptizin verir. Bu /Zc:noexceptTypes seçenek yalnızca veya daha sonraki bir sürüm etkinleştirildiğinde /std:c++17 kullanılabilir. /Zc:noexceptTypes varsayılan olarak ISO C++17 ve üzeri standartlarına uyacak şekilde etkinleştirilir. seçeneği'ni /permissive- etkilemez /Zc:noexceptTypes. Veya daha sonra belirtildiğinde /std:c++17 C++14 davranışına noexcept geri dönüleceğini belirterek /Zc:noexceptTypes- bu seçeneği kapatın.
Visual Studio 2017 sürüm 15.5'den başlayarak, C++ derleyicisi C++17 modundaki bildirimlerde veya seçeneği belirttiğinizde /permissive- daha uyumsuz özel durum belirtimlerini tanılar.
Bu örnek, bir özel durum tanımlayıcısı olan bildirimlerin seçenek ayarlandığında veya devre dışı bırakıldığında nasıl davrandığını /Zc:noexceptTypes gösterir. Ayarlanırken davranışı göstermek için kullanarak cl /EHsc /W4 noexceptTypes.cppderleyin. Devre dışı bırakıldığında davranışı göstermek için kullanarak cl /EHsc /W4 /Zc:noexceptTypes- noexceptTypes.cppderleyin.
// noexceptTypes.cpp
// Compile by using: cl /EHsc /W4 noexceptTypes.cpp
// Compile by using: cl /EHsc /W4 /Zc:noexceptTypes- noexceptTypes.cpp
void f() throw(); // equivalent to void f() noexcept;
void f() { } // warning C5043
void g() throw(...); // warning C5040
struct A
{
virtual void f() throw();
};
struct B : A
{
virtual void f() { } // error C2694
};
Varsayılan ayarı /Zc:noexceptTypeskullanılarak derlendiğinde, örnek listelenen uyarıları oluşturur. Kodunuzu güncelleştirmek için bunun yerine aşağıdakileri kullanın:
void f() noexcept;
void f() noexcept { }
void g() noexcept(false);
struct A
{
virtual void f() noexcept;
};
struct B : A
{
virtual void f() noexcept { }
};
Visual C++'daki uyumluluk sorunları hakkında daha fazla bilgi için bkz . Standart Dışı Davranış.
Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>C/C++>Komut Satırı özellik sayfasını seçin.
Ek Seçenekler özelliğini veya içerecek
/Zc:noexceptTypes-/Zc:noexceptTypesşekilde değiştirin ve ardından Tamam'ı seçin.