Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Standard C++17 vytvoří throw() alias pro noexcept, odebere throw(type-list) a throw(...), a umožňuje určitým typům zahrnout noexcept. Tato změna může způsobit řadu problémů s kompatibilitou zdroje v kódu, které odpovídají C++14 nebo starším. Možnost /Zc:noexceptTypes určuje shodu se standardem C++17. /Zc:noexceptTypes- umožňuje chování jazyka C++14 a starších při kompilaci kódu v režimu C++17.
Syntaxe
/Zc:noexceptTypes[-]
Poznámky
Pokud je zadána /Zc:noexceptTypes možnost, kompilátor odpovídá standardu C++17 a považuje throw() se za alias pro noexcept, odebere throw()type-lista throw(...)a umožňuje, aby určité typy zahrnovaly .noexcept Tato /Zc:noexceptTypes možnost je dostupná jenom v případech, kdy /std:c++17 je povolená nebo novější. /Zc:noexceptTypes je ve výchozím nastavení povolen tak, aby odpovídal standardům ISO C++17 a novějším. Tato /permissive- možnost nemá vliv na /Zc:noexceptTypes. Tuto možnost vypněte tak /Zc:noexceptTypes- , že zadáte, že se má vrátit k chování jazyka C++14 zadaného nebo novějšího noexcept /std:c++17 .
Počínaje sadou Visual Studio 2017 verze 15.5 kompilátor jazyka C++ diagnostikuje v deklaracích v režimu C++17 více neshodných specifikací výjimek nebo při zadání /permissive- možnosti.
Tato ukázka ukazuje, jak se deklarace se specifikátorem výjimky chovají, když /Zc:noexceptTypes je tato možnost nastavená nebo zakázaná. Chcete-li zobrazit chování při nastavení, zkompilujte pomocí cl /EHsc /W4 noexceptTypes.cpp. Chcete-li zobrazit chování při zakázání, zkompilujte pomocí .cl /EHsc /W4 /Zc:noexceptTypes- noexceptTypes.cpp
// 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
};
Při kompilaci pomocí výchozího nastavení /Zc:noexceptTypesvygeneruje ukázka uvedená upozornění. Pokud chcete aktualizovat kód, použijte místo toho následující:
void f() noexcept;
void f() noexcept { }
void g() noexcept(false);
struct A
{
virtual void f() noexcept;
};
struct B : A
{
virtual void f() noexcept { }
};
Další informace o problémech s shodami v jazyce Visual C++ naleznete v tématu Nestandardní chování.
Nastavení tohoto parametru kompilátoru ve vývojovém prostředí Visual Studio
Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.
Vyberte stránku vlastností příkazového řádku C/C++>Vlastnosti>konfigurace.
Upravte vlastnost Další možnosti tak, aby zahrnovala
/Zc:noexceptTypesnebo/Zc:noexceptTypes-a pak zvolte OK.