Udostępnij za pośrednictwem


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-seqfunkcji , 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

Zobacz też

Atrybuty w języku C++