warning
pragma
컴파일러 경고 메시지의 동작을 선택적으로 수정할 수 있습니다.
구문
#pragma warning(
warning-specifier
:
warning-number-list
[;
warning-specifier
:
warning-number-list
... ])
#pragma warning( push
[,
n ])
#pragma warning( pop )
설명
다음과 같은 경고 지정자 매개 변수를 사용할 수 있습니다.
경고 지정자 | 의미 |
---|---|
1 , 2 , 3 4 |
지정된 수준에 지정된 경고를 적용합니다. 또한 기본적으로 꺼져 있는 지정된 경고를 켭니다. |
default |
경고 동작을 기본값으로 다시 설정합니다. 또한 기본적으로 꺼져 있는 지정된 경고를 켭니다. 문서화된 기본 수준에서 경고가 생성됩니다. 자세한 내용은 기본적으로 꺼져 있는 컴파일러 경고를 참조하세요. |
disable |
지정된 경고 메시지를 발행하지 마세요. |
error |
지정된 경고를 오류로 보고합니다. |
once |
지정된 메시지를 한 번만 표시합니다. |
suppress |
스택의 pragma 현재 상태를 푸시하고, 다음 줄에 대해 지정된 경고를 사용하지 않도록 설정한 다음, 상태가 다시 설정되도록 경고 스택을 pragma 팝합니다. |
다음 코드 문은 매개 변수에 warning-number-list
여러 경고 번호를 포함할 수 있으며 동일한 pragma 지시문에 여러 warning-specifier
매개 변수를 지정할 수 있음을 보여 줍니다.
#pragma warning( disable : 4507 34; once : 4385; error : 164 )
이 지시문은 다음 코드와 기능적으로 동일합니다.
// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )
// Issue warning C4385 only once.
#pragma warning( once : 4385 )
// Report warning C4164 as an error.
#pragma warning( error : 164 )
컴파일러가 0에서 999 사이의 경고 번호에 4000을 추가합니다.
4700-4999 범위의 경고 번호는 코드 생성과 연결됩니다. 이러한 경고의 경우 컴파일러가 함수 정의에 도달할 때 적용되는 경고 상태는 함수의 나머지 부분에 대해 계속 적용됩니다. 함수에서 warning
pragma 4699보다 큰 경고 번호의 상태를 변경하는 데는 함수가 종료된 후에만 적용됩니다. 다음 예제에서는 코드 생성 경고 메시지를 사용하지 않도록 설정한 다음 복원하기 위한 올바른 배치 warning
pragma 를 보여줍니다.
// 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 Test ends
}
int main() {
int x;
int y = x; // C4700
}
함수 본문 전체에서 마지막 설정이 warning
pragma 전체 함수에 적용됩니다.
푸시 및 팝
warning
pragma 또한 다음 구문을 지원합니다. 여기서 선택적 n 매개 변수는 경고 수준(1~4)을 나타냅니다.
#pragma warning( push [ , n ] )
#pragma warning( pop )
모든 pragmawarning( push )
경고에 대한 현재 경고 상태를 저장합니다. 모든 pragmawarning( push, n )
경고에 대한 현재 상태를 저장하고 전역 경고 수준을 n으로 설정합니다.
pragmawarning( pop )
스택에 푸시된 마지막 경고 상태를 팝합니다. 경고 상태에 대한 변경 내용과 push
pop
실행 취소됩니다. 다음 예제를 고려해 보세요.
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
이 코드의 끝에서 모든 경고(4705, pop
4706 및 4707 포함)의 상태를 코드 시작 시의 상태로 복원합니다.
헤더 파일을 작성할 때 사용자가 수행한 경고 상태 변경으로 인해 헤더가 올바르게 컴파일되지 않도록 할 수 push
pop
있습니다. 헤더의 시작 부분과 pop
끝에 사용합니다push
. 예를 들어 경고 수준 4에서 완전히 컴파일되지 않는 헤더가 있을 수 있습니다. 다음 코드는 경고 수준을 3으로 변경한 다음 헤더 끝에 원래 경고 수준을 복원합니다.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
경고를 표시하지 않는 데 도움이 되는 컴파일러 옵션에 대한 자세한 내용은 다음을 참조 /FI
하세요 /w
.