Ostrzeżenie kompilatora (poziom 4, wyłączony) C5240
"attribute-string": atrybut jest ignorowany w tej pozycji składniowej
Uwagi
Ostrzeżenie C5240 występuje po znalezieniu atrybutu [[nodiscard]]
lub [[maybe_unused]]
w niewłaściwym położeniu składniowym. Na przykład [[nodiscard]]
atrybut w tej pozycji składni dotyczy decl-specifier-seq
funkcji , a nie funkcji f
:
static [[nodiscard]] int f() { return 1; }
Przed programem Visual Studio 2019 w wersji 16.10 kompilator dyskretnie ignoruje użycie atrybutu [[nodiscard]]
lub [[maybe_unused]]
w pozycji składni, która nie miała zastosowania do zadeklarowanej funkcji ani obiektu. W programie Visual Studio 2019 w wersji 16.10 lub nowszej kompilator emituje domyślnie ostrzeżenie na poziomie 4 ostrzeżenie C5240. Aby uzyskać więcej informacji na temat włączania tego ostrzeżenia, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone.
Przykład
W poniższym przykładzie pokazano, jak może wystąpić ostrzeżenie 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
Aby rozwiązać ten problem, przenieś atrybut do poprawnej pozycji składni:
// 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