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-seq
fonction , 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 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