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.
Chybová zpráva
Poznámky
Chyba C2338 může být způsobena chybou static_assert během kompilace. Zpráva je zadána parametry static_assert .
Chyba C2338 může být také generována externími poskytovateli kompilátoru. Ve většině případů jsou tyto chyby hlášeny knihovnou DLL zprostředkovatele atributů, například ATLPROV. Mezi běžné formy této zprávy patří:
'attribute' Atl Attribute Provider: error ATLnumbermessage
Nesprávné použití atributu "attribute"
"usage": nesprávný formát atributu usage
Tyto chyby jsou často neopravitelné a můžou následovat závažná chyba kompilátoru.
Pokud chcete tyto problémy vyřešit, opravte použití atributu. Například v některých případech musí být parametry atributů deklarovány dříve, než je lze použít. Pokud je k dispozici číslo chyby ATL, vyhledejte si konkrétnější informace v dokumentaci k této chybě.
Example
Ve standardu C++11 a novějších constexpr funkcích se při použití ve výrazu konstanty ve výchozím nastavení nepovažují noexcept . Tato změna chování pochází z rozlišení základní pracovní skupiny (CWG) CWG 1351 a je povoleno v /permissive- režimu. Následující příklad se zkompiluje v sadě Visual Studio 2019 verze 16.1 a starší, ale vytvoří C2338 v sadě Visual Studio 2019 verze 16.2:
// c2338.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338.cpp
constexpr int f() { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept"); // C2338 in 16.2
}
Pokud chcete chybu opravit, přidejte noexcept výraz do deklarace funkce:
// c2338_fixed.cpp
// Compile using: cl /EHsc /W4 /permissive- c2338_fixed.cpp
constexpr int f() noexcept { return 0; }
int main() {
static_assert(noexcept(f()), "f should be noexcept");
}