진단 지시자
진단 지시자 (Diagnostic directives)
전처리 단계에서 "이 조건을 만나면 아예 컴파일을 멈춰라"와 같은 의도를 표현하고 싶을 때가 있어요. 그 역할을 하는 게 #error 지시자예요. 컴파일러가 이 지시자를 만나면 주어진 메시지를 출력하고 프로그램을 ill-formed로 처리해 컴파일을 중단해요. C23부터는 컴파일을 멈추지 않는 #warning도 표준에 추가됐어요.
출처: cppreference
본문
문법 (Syntax)
#error diagnostic-message // (1)
#warning diagnostic-message // (2) (since C23)
설명 (Explanation)
#error지시자를 만나면 구현은diagnostic-message를 화면에 표시하고 프로그램을 ill-formed로 만들어 컴파일을 중단해요.- (1)과 같지만, 프로그램의 유효성에는 영향을 주지 않고 컴파일이 계속돼요.
diagnostic-message는 반드시 따옴표로 묶을 필요 없이 여러 단어로 구성될 수 있어요.
주의할 점 (Notes)
C23에서 표준화되기 전에도 #warning은 많은 컴파일러가 적합 확장으로 모든 모드에서 제공하고 있었어요.
예제 (Example)
표준 준수 여부를 검사해서, 기준을 벗어나면 #error로 멈추고 C23 이상이면 #warning을 띄우는 예시예요.
#if __STDC__ != 1
# error "Not a standard compliant compiler"
#endif
#if __STDC_VERSION__ >= 202311L
# warning "Using #warning as a standard feature"
#endif
#include <stdio.h>
int main (void)
{
printf("The compiler used conforms to the ISO C Standard !!");
}
가능한 출력:
The compiler used conforms to the ISO C Standard !!
같이 보기 (See also)
- 조건부 포함 —
#if/#ifdef계열 지시자