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