Share via


Upozornění kompilátoru (úroveň 4, vypnuto) C5240

Attribute-string: atribut se v této syntaktické pozici ignoruje.

Poznámky

Upozornění C5240 nastane v případě, že [[nodiscard]][[maybe_unused]] je atribut nalezen v nesprávné syntaktické pozici. Například [[nodiscard]] atribut v této syntaktické pozici se vztahuje na decl-specifier-seq, nikoli na funkci f:

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

Před sadou Visual Studio 2019 verze 16.10 by kompilátor bezobslužně ignoroval použití [[nodiscard]] nebo [[maybe_unused]] atributu v syntaktické pozici, která se nevztahuje na deklarovanou funkci nebo objekt. V sadě Visual Studio 2019 verze 16.10 a novější kompilátor místo toho generuje upozornění C5240 mimo výchozí úroveň 4. Další informace o povolení tohoto upozornění najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.

Příklad

Následující příklad ukazuje, jak může dojít k upozornění 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

Pokud chcete tento problém vyřešit, přesuňte atribut na správnou syntaktickou pozici:

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

Viz také

Atributy v jazyce C++