다음을 통해 공유


컴파일러 경고(수준 4, 해제) C5240

'attribute-string': 이 구문 위치에서 특성이 무시됩니다.

설명

경고 C5240은 잘못된 구문 위치에서 특성이 [[maybe_unused]] 발견되면 발생 [[nodiscard]] 합니다. 예를 들어 [[nodiscard]] 이 구문 위치의 특성은 함수에 decl-specifier-seq적용되지 않고 다음 함수 f에 적용됩니다.

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

Visual Studio 2019 버전 16.10 이전에는 컴파일러가 선언되는 함수 또는 [[maybe_unused]] 개체에 적용되지 않은 구문 위치에 있는 특성의 [[nodiscard]] 사용을 자동으로 무시합니다. 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++의 특성