Share via


Derleyici Uyarısı (düzey 4, kapalı) C5240

'attribute-string': özniteliği bu sağlam konumda yoksayıldı

Açıklamalar

Uyarı C5240, bir [[nodiscard]] veya [[maybe_unused]] özniteliği yanlış bozulmamış konumda bulunduğunda oluşur. Örneğin, [[nodiscard]] bu dizimsel konumdaki öznitelik işlevine decl-specifier-seqfdeğil, öğesine uygulanır:

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

Visual Studio 2019 sürüm 16.10'undan önce, derleyici bildirilmekte olan işleve veya nesneye uygulanmayan söz dizimsel bir konumdaki [[maybe_unused]] veya özniteliğinin kullanımlarını [[nodiscard]] sessizce yoksayar. Visual Studio 2019 sürüm 16.10 ve sonraki sürümlerinde, derleyici bunun yerine varsayılan düzey 4 uyarısı C5240'ı yayar. Bu uyarıyı etkinleştirme hakkında daha fazla bilgi için bkz . Varsayılan olarak kapalı olan derleyici uyarıları.

Örnek

Aşağıdaki örnekte 5240 uyarısının nasıl gerçekleşebileceği gösterilmektedir:

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

Bu sorunu düzeltmek için özniteliğini doğru söz dizimsel konuma taşıyın:

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

Ayrıca bkz.

C++ içindeki öznitelikler