F.R.I.D.A.Y.

pragma disable vs pragma suppress 본문

DEV/Tip

pragma disable vs pragma suppress

F.R.I.D.A.Y. 2021. 3. 24. 17:38
반응형

 경고 예외 처리를 위해 코드상에 #pragma warning() 시리즈를 작성할 때가 있습니다. 괄호 안에 disable과 suppress가 들어갈 수 있는데, 두 경우는 어떤 경우에 사용되는지 알아보겠습니다.


#pragma?

 컴파일러의 기능을 제어하는 지시문입니다. pragma는 컴파일러마다, 운영체제마다 정의가 다를 수 있고 그에 따라 하는 작업도 다릅니다.

 

#pragma warning(disable:4996)
#pragma warning(suppress:4996)

 두 지시문은 같은 기능을 합니다. C4996 경고를 해제해주는 지시문으로, 해당 지시문을 사용하면 프로젝트 설정 여하에 상관 없이 SDL 대상 함수(scanf 등)를 사용할 수 있습니다.

 

disable

 해당 옵션으로 사용하면 파일 내에 존재하는, 선택된 경고를 모두 해제합니다.

 

suppress

 해당 옵션은 지시문을 작성한 다음에 오는 라인의 경고를 해제해줍니다.

#include <stdio.h>


int main(void) {

	int value;
	char data[20];

	printf("Input: ");
#pragma warning(suppress: 4996)
	scanf("%d", &value);

	printf("Output: %d\n", value);

	printf("String: ");
	scanf("%s", data);

	printf("String Output: %s\n", data);

	return 0;
}

 위와 같은 코드가 존재할 때, #pragma warning(suppress: 4996)을 작성한 다음 scanf 함수에 대해서는 C4996 경고가 노출되지 않습니다. 다른 scanf 함수에서는 그대로 C4996 경고가 노출됩니다.

 

 suppress 옵션은 모든 경고가 아니라 일부 코드에 대해서 컴파일러 경고를 해제하도록 할 때 사용할 수 있습니다.

 

# index

728x90
반응형
Comments