Avertissement du compilateur (niveau 4, désactivé) C5240

'attribute-string' : l’attribut est ignoré dans cette position syntaxique

Notes

L’avertissement C5240 se produit lorsqu’un ou [[maybe_unused]] un [[nodiscard]] attribut est trouvé dans la position syntactique incorrecte. Par exemple, l’attribut [[nodiscard]] de cette position syntaxique s’applique à la decl-specifier-seqfonction , et non à la fonction f:

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

Avant Visual Studio 2019 version 16.10, le compilateur ignore silencieusement les utilisations d’un ou [[maybe_unused]] d’un [[nodiscard]] attribut dans une position syntaxique qui ne s’appliquait pas à la fonction ou à l’objet déclaré. Dans Visual Studio 2019 version 16.10 et ultérieure, le compilateur émet un avertissement de niveau 4 désactivé par défaut C5240 à la place. Pour plus d’informations sur l’activation de cet avertissement, consultez les avertissements du compilateur désactivés par défaut.

Exemple

L’exemple suivant montre comment l’avertissement 5240 peut se produire :

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

Pour résoudre ce problème, déplacez l’attribut vers la position syntaxique correcte :

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

Voir aussi

Attributs en C++