다음을 통해 공유


warning pragma

컴파일러 경고 메시지의 동작을 선택적으로 수정할 수 있습니다.

통사론

#pragma warning(
warning-specifier : warning-number-list
 [;warning-specifier:warning-number-list ... ] )
#pragma warning( push [ ,n ] )
#pragma warning( pop )

발언

다음 경고 지정자 매개 변수를 사용할 수 있습니다.

warning-specifier 의미
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 범위의 경고 번호는 코드 생성과 연결됩니다. 이러한 경고의 경우 컴파일러가 함수 정의에 도달할 때 적용되는 경고 상태는 함수의 나머지 부분에 대해 계속 적용됩니다. 함수에서 warningpragma 사용하여 4699보다 큰 경고 번호의 상태를 변경하면 함수가 종료된 후에만 적용됩니다. 다음 예제에서는 코드 생성 경고 메시지를 사용하지 않도록 설정한 다음 복원하기 위해 warningpragma 올바르게 배치하는 방법을 보여 있습니다.

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

함수 본문 전체에서 warningpragma 마지막 설정이 전체 함수에 적용됩니다.

푸시 및 팝

또한 warningpragma 다음 구문을 지원합니다. 여기서 선택적 n 매개 변수는 경고 수준(1~4)을 나타냅니다.

#pragma warning( push [ , n ] )

#pragma warning( pop )

pragma warning( push ) 모든 경고에 대한 현재 경고 상태를 저장합니다. 모든 경고에 대한 현재 상태를 저장하고 전역 경고 수준을 n설정합니다.

pragma warning( pop ) 스택에 푸시된 마지막 경고 상태를 표시합니다. push pop 사이의 경고 상태에 대한 변경 내용은 실행 취소됩니다. 다음 예제를 고려하세요.

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

이 코드의 끝에서 pop 모든 경고의 상태(4705, 4706 및 4707 포함)를 코드 시작 시의 상태로 복원합니다.

헤더 파일을 작성할 때 pushpop 사용하여 사용자의 경고 상태 변경으로 인해 헤더가 올바르게 컴파일되지 않도록 할 수 있습니다. 헤더의 시작 부분에 push 사용하고 끝에 pop. 예를 들어 경고 수준 4에서 완전히 컴파일되지 않는 헤더가 있을 수 있습니다. 다음 코드는 경고 수준을 3으로 변경한 다음 헤더 끝에 원래 경고 수준을 복원합니다.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

경고를 표시하지 않는 데 도움이 되는 컴파일러 옵션에 대한 자세한 내용은 /FI/w참조하세요.

참고 항목

pragma 지시문과 __pragma_Pragma 키워드를