Share via


Advertencia del compilador (nivel 4, desactivada) C5240

"attribute-string": el atributo se omite en esta posición sintáctica

Comentarios

La advertencia C5240 se produce cuando se encuentra un atributo [[nodiscard]] o [[maybe_unused]] en la posición sintáctica incorrecta. Por ejemplo, el atributo [[nodiscard]] en esta posición sintáctica se aplica a la función decl-specifier-seq y no a la función f:

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

Antes de la versión 16.10 de Visual Studio 2019, el compilador omitiría silenciosamente los usos de un atributo [[nodiscard]] o [[maybe_unused]] en una posición sintáctica que no se aplicaba a la función o al objeto que se declaraba. En su lugar, en la versión 16.10 y posteriores de Visual Studio 2019, el compilador emite la advertencia C5240 de nivel 4, desactivada de manera predeterminada. Para obtener más información sobre cómo habilitar esta advertencia, consulte Advertencias del compilador desactivadas de forma predeterminada.

Ejemplo

En el ejemplo siguiente, se muestra cómo puede producirse la advertencia C5240:

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

Para corregir este problema, mueva el atributo a la posición sintáctica correcta:

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

Consulte también

Atributos de C++