/Zc:noexceptTypes
(C++17 noexcept kuralları)
C++17 standardı, için bir diğer ad oluştururthrow()
, kaldırır throw(
)
type-list
ve throw(...)
bazı türlerin içermesine noexcept
izin 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 noexcept
bir diğer ad olarak davranırthrow()
, throw(
)
type-list
ve throw(...)
kaldırır ve bazı türlerin içermesine noexcept
izin 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.cpp
derleyin. Devre dışı bırakıldığında davranışı göstermek için kullanarak cl /EHsc /W4 /Zc:noexceptTypes- noexceptTypes.cpp
derleyin.
// 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:noexceptTypes
kullanı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.