컴파일러 경고(수준 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