컴파일러 경고 메시지의 동작을 선택적으로 수정할 수 있습니다.
통사론
#pragma warning(
[ ]
[ ... ]
[ 엔 ]
#pragma warning( pop )
발언
다음 경고 지정자 매개 변수를 사용할 수 있습니다.
| 경고 지정자 | 의미 |
|---|---|
| , , | 지정된 수준에 지정된 경고를 적용합니다. 예를 들어 경고 수준이 그 이상으로 설정되지 않는 한 경고 5033(일반적으로 수준 1 경고)을 끕니다. 또한 기본적으로 꺼져 있는 지정된 경고를 설정하는 데 사용할 수 있습니다. |
default |
경고 동작을 기본값으로 다시 설정합니다. 또한 기본적으로 꺼져 있는 지정된 경고를 켭니다. 경고는 기본값인 문서화된 수준에서 생성됩니다. 자세한 내용은기본적으로 해제된 |
disable |
지정된 경고 메시지를 발행하지 마세요. 선택적 속성이 허용됩니다. |
error |
지정된 경고를 오류로 보고합니다. |
once |
지정된 메시지를 한 번만 표시합니다. |
suppress |
스택에서 현재 상태를 푸시하고, 다음 줄에 대해 지정된 경고를 사용하지 않도록 설정한 다음, 상태가 다시 설정되도록 경고 스택을 팝합니다. |
justification |
경고를 사용하지 않도록 설정하거나 표시하지 않는 이유를 설명하는 선택적 문자열입니다. Visual Studio 2022 버전 17.14에 도입되었습니다. |
다음 코드 문은 매개 변수에 여러 경고 번호를 포함할 수 있으며 동일한 지시문에 여러 매개 변수를 지정할 수 있음을 보여 줍니다.
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
그러나 필드가 있는 경우 경고 번호를 하나만 지정할 수 있습니다. 다음 코드 문은 필드의 사용 방법을 보여 줍니다.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
필드를 사용하여 경고가 비활성화되거나 표시되지 않는 이유를 설명합니다. 이 필드는 및 에 대해서만 지원됩니다. 옵션이 지정되면 사유가 SARIF(정적 분석 결과 교환 형식) 출력에 나타납니다. 해당 값은 UTF-8로 인코딩된 좁은 문자열 리터럴입니다. SARIF 파일을 생성하려면 컴파일러 옵션을 사용합니다 .
이 지시문은 다음 코드와 기능적으로 동일합니다.
// Disable warning messages 4507 and 4034.
#pragma warning(disable : 4507 4034)
// Issue warning C4385 only once.
#pragma warning(once : 4385)
// Report warning C4164 as an error.
#pragma warning(error : 164)
컴파일러는 0에서 999 사이의 경고 번호에 4000을 추가합니다.
4700-4999 범위의 경고 번호는 코드 생성과 연결됩니다. 이러한 경고의 경우 컴파일러가 함수 정의에 도달할 때 적용되는 경고 상태는 함수의 나머지 부분에 대해 계속 적용됩니다. 함수에서 사용하여 4699보다 큰 경고 번호의 상태를 변경하면 함수가 종료된 후에만 적용됩니다. 다음 예제에서는 코드 생성 경고 메시지를 사용하지 않도록 설정한 다음 복원하기 위해 올바르게 배치하는 방법을 보여 있습니다.
// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test()
{
int x;
int y = x; // no C4700 here
#pragma warning(default:4700) // C4700 enabled after compiling Test()
}
int main()
{
int x;
int y = x; // C4700
}
함수 본문 전체에서 마지막 설정이 전체 함수에 적용됩니다.
푸시 및 팝
또한 다음 구문을 지원합니다. 여기서 선택적 n 매개 변수는 경고 수준(1~4)을 나타냅니다.
#pragma warning( push [ , n ] )
#pragma warning( pop )
모든 경고에 대한 현재 경고 상태를 저장합니다.
스택에 푸시된 마지막 경고 상태를 표시합니다. 사이의 경고 상태에 대한 변경 내용은 실행 취소됩니다. 다음 예제를 고려하세요.
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
이 코드의 끝에서 모든 경고의 상태(4705, 4706 및 4707 포함)를 코드 시작 시의 상태로 복원합니다.
헤더 파일을 작성할 때 및 사용하여 사용자의 경고 상태 변경으로 인해 헤더가 올바르게 컴파일되지 않도록 할 수 있습니다. 헤더의 시작 부분에 사용하고 끝에 . 예를 들어 경고 수준 4에서 완전히 컴파일되지 않는 헤더가 있을 수 있습니다. 다음 코드는 경고 수준을 3으로 변경한 다음 헤더 끝에 원래 경고 수준을 복원합니다.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
다음 중에서 선택
경고 억제를 세밀하게 제어할 수 있습니다.
-
[[gsl::suppress]]Microsoft C++ Code Analysis 내보낸 경고만 표시하지 않습니다. 범위 또는 특정 선언에 적용할 수 있는 C++ 핵심 지침 검사와 함께 사용합니다. - 는 컴파일러 경고에 사용할 수 있습니다. 코드의 구조를 크게 변경하지 않고 특정 코드 블록에서 경고를 표시하지 않는 경우에 유용합니다.
가능하면 [[gsl::suppress]] 사용하여 Microsoft C++ Code Analysis 경고를 표시하지 않습니다.
경고를 표시하지 않는 데 도움이 되는 컴파일러 옵션에 대한 자세한 내용은 및 참조하세요.
참고 항목
pragma 지시문과 및 키워드를