Freigeben über


Compilerwarnung (Ebene 4, deaktiviert) C5240

attribute-string“: Das Attribut wird an dieser syntaktischen Position ignoriert.

Hinweise

Warnung C5240 tritt auf, wenn ein oder [[maybe_unused]] ein [[nodiscard]] Attribut in der falschen syntaktischen Position gefunden wird. Das Attribut in dieser syntaktischen Position gilt beispielsweise [[nodiscard]] für die decl-specifier-seqFunktion , nicht für die Funktion f:

static [[nodiscard]] int f() { return 1; }

Vor Visual Studio 2019, Version 16.10, würde der Compiler die Verwendung eines [[nodiscard]] oder [[maybe_unused]] Attributs in einer syntaktischen Position ignorieren, die nicht auf die deklarierte Funktion oder das Objekt angewendet wurde. In Visual Studio 2019, Version 16.10 und höher, gibt der Compiler stattdessen die Standardmäßige Warnung C5240 aus. Weitere Informationen zum Aktivieren dieser Warnung finden Sie unter Compilerwarnungen, die standardmäßig deaktiviert sind.

Beispiel

Das folgende Beispiel zeigt, wie Warnung 5240 auftreten kann:

// c5240.cpp
// Compile using: cl /EHsc /W4 /std:c++17 /permissive- /c c5240.cpp
#pragma warning( default: 5240 )
static [[nodiscard]] int f() { return 1; }  // C5240

Um dieses Problem zu beheben, verschieben Sie das Attribut an die richtige syntaktische Position:

// c5240_fixed.cpp
// Compile using: cl /EHsc /W4 /std:c++17 /permissive- /c c5240_fixed.cpp
#pragma warning( default: 5240 )
[[nodiscard]] static int f() { return 1; }  // OK

Siehe auch

Attribute in C++