Avviso del compilatore (livello 4, off) C5240

'attribute-string': l'attributo viene ignorato in questa posizione sintattica

Osservazioni:

L'avviso C5240 si verifica quando viene trovato un [[nodiscard]] attributo o [[maybe_unused]] nella posizione sintattica errata. Ad esempio, l'attributo [[nodiscard]] in questa posizione sintattica si applica a decl-specifier-seq, non alla funzione f:

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

Prima di Visual Studio 2019 versione 16.10, il compilatore ignorava automaticamente gli usi di un [[nodiscard]] attributo o [[maybe_unused]] in una posizione sintattica che non si applicava alla funzione o all'oggetto dichiarato. In Visual Studio 2019 versione 16.10 e successive il compilatore genera invece un avviso di livello 4 disattivato C5240. Per altre informazioni su come abilitare questo avviso, vedere Avvisi del compilatore disattivati per impostazione predefinita.

Esempio

L'esempio seguente mostra come può verificarsi l'avviso 5240:

// 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

Per risolvere questo problema, spostare l'attributo nella posizione sintattica corretta:

// 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

Vedi anche

Attributi in C++