Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Hibaüzenet
Megjegyzések
A C2338 hibát a fordítás során fellépő static_assert hiba okozhatja. Az üzenetet a static_assert paraméterek adják meg.
A C2338 hibát külső szolgáltatók is létrehozhatják a fordítóban. A legtöbb esetben ezeket a hibákat egy attribútumszolgáltató DLL-je, például az ATLPROV jelenti. Az üzenet néhány gyakori formája a következő:
"attribútum" Atl attribútumszolgáltató: hibaATL-számüzenet
Az attribútum helytelen használata
"használat": a "usage" attribútum helytelen formátuma
Ezek a hibák gyakran helyreállíthatatlanok, és végzetes fordítóhibát követhetnek.
A problémák megoldásához javítsa ki az attribútumhasználatot. Bizonyos esetekben például az attribútumparamétereket deklarálni kell a használatuk előtt. Ha meg van adva egy ATL-hibaszám, részletesebb információkért tekintse meg a hiba dokumentációját.
Example
A Standard C++11 és újabb constexpr verziókban a függvények alapértelmezés szerint nem lesznek figyelembe véve noexcept , ha állandó kifejezésben használják őket. Ez a viselkedésváltozás a Core Working Group (CWG) CWG 1351 megoldásából származik, és módban engedélyezve /permissive- van. Az alábbi példa a Visual Studio 2019 16.1-es és korábbi verziójában áll össze, de a C2338-at a Visual Studio 2019 16.2-es verziójában állítja elő:
// 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
}
A hiba kijavításához adja hozzá a kifejezést a noexcept függvénydeklarációhoz:
// 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");
}