Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Атрибут "attribute-string": атрибут игнорируется в этой синтаксической позиции
Замечания
Предупреждение C5240 возникает при [[nodiscard]] обнаружении атрибута [[maybe_unused]] в неправильной синтаксической позиции. Например, [[nodiscard]] атрибут в этой синтаксической позиции применяется к decl-specifier-seqфункции, а не к функции f:
static [[nodiscard]] int f() { return 1; }
Перед Visual Studio 2019 версии 16.10 компилятор автоматически игнорирует использование [[nodiscard]] атрибута или [[maybe_unused]] атрибута в синтаксической позиции, которая не применяется к объявленной функции или объекту. В Visual Studio 2019 версии 16.10 и более поздних версиях компилятор выдает предупреждение 4 уровня 4 по умолчанию C5240. Дополнительные сведения о включении этого предупреждения см . в предупреждениях компилятора, отключенных по умолчанию.
Пример
В следующем примере показано, как может произойти предупреждение 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
Чтобы устранить эту проблему, переместите атрибут в правильную синтаксическую позицию:
// 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