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.
Specifické pro Microsoft
__declspec Rozšířený atribut, který lze použít v deklaraci funkcí.
Syntaxe
return-type
__declspec(nothrow)[call-convention] function-name ([argument-list])
Poznámky
Doporučujeme, aby všechny nové kódy používaly noexcept operátor místo __declspec(nothrow).
Tento atribut oznamuje kompilátoru, že deklarovaná funkce a funkce, které volá, nikdy nevyvolají výjimku. Nevynucuje však direktivu. Jinými slovy, nikdy nezpůsobí std::terminate vyvolání, na rozdíl od noexceptnebo v /std:c++17 režimu (Visual Studio 2017 verze 15.5 a novější), throw().
V modelu synchronního zpracování výjimek, který je nyní výchozí, může kompilátor odstranit mechanismus sledování životnosti určitých nerozvinutelných objektů v takové funkci a významně tak snížit velikost kódu. Vzhledem k následující direktivě preprocesoru jsou tři níže uvedené deklarace funkce ekvivalentní v /std:c++14 režimu:
#define WINAPI __declspec(nothrow) __stdcall
void WINAPI f1();
void __declspec(nothrow) __stdcall f2();
void __stdcall f3() throw();
V /std:c++17 režimu není ekvivalentní ostatním, které používajíthrow(), __declspec(nothrow) protože to způsobí std::terminate vyvolání, pokud je vyvolána výjimka z funkce.
Deklarace void __stdcall f3() throw(); používá syntaxi definovanou standardem C++. V jazyce C++17 throw() bylo klíčové slovo zastaralé.
END Specifikace Microsoftu