共用方式為


編譯程式警告 (層級 4, 關閉) C5240

'attribute-string': 已在此語法位置忽略屬性

備註

當 或 [[maybe_unused]] 屬性位於錯誤的語法位置時[[nodiscard]],就會發生警告 C5240。 例如, [[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 警告 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

另請參閱

C++ 中的屬性