#error, #pragma 및 #line
Programming/C 2013. 2. 15. 03:25 |ANCI C에는 #error와 #pragma가 있다.
#error
#if A_LENGTH > B_LENGTH
#error "Unmatched Length"
#endif
컴파일 중 #error 지시자를 만나면, 그 뒤의 문자열이 화면에 출력된다.
#pragma
#pragma 지시자는 다음과 같이 사용하며, 특정 C컴파일러에 따라 그 효과가 다르다.
#pragma 토큰들
#pragma는 컴파일러에게 정보를 전달하기 위해서 사용이 되는 매크로 지시자이다. 그런데 컴파일러마다 지원하는 #pragma 지시자의 구성에 차이가 있다. 그래서 일괄적으로 설명하는 데에는 무리가 있다.
ex) #pragma warning(disable:5555) //VC에서만 유효.
이 문장은 VC++ 컴파일러에게 다음과 같은 메시지를 전달하는 매크로 명령문이다.
"5555번 경고 메시지는 그냥 뿌리지 마세요."
#line
#line은 원래의 파일명과 줄 번호 대신에 그 위치에 임시 파일명과 줄 번호를 부여하는 지시문이며, 그 형식은 다음과 같다.
#line 줄번호 "파일명"
이 #line은 다음 줄의 번호를 바꾸고, 현 파일명이 마치 바뀐 것처럼 취급한다. 컴파일러가 발견한 에러 메시지 속에 에러 장소를 나타내기 위해 지정한 파일명과 줄 번호가 채택된다. 이러한 #line 사용 예는 다음과 같다.
.
.
.
10 a = int;
11 #line 100 "error.c"
12 c=(d+e;
.
.
.
에러 메시지:
program.c line 10 ... syntax error ...
error.c line 100 ... stntax error ...
이 예에서 10,11,12는 program.c의 줄 번호를 나타내고 있는데, 줄 번호 11의 #line지시로 줄 번호가 100으로 재지정 되었으므로 줄 번호 12의 에러는 error.c에 줄 번호 100으로 취급된다.
'Programming > C' 카테고리의 다른 글
fread, fwrite 함수 (1) | 2013.02.15 |
---|---|
조건부 컴파일(Conditional Compilation) (0) | 2013.02.15 |
매크로와 전처리기 (Preprocessor). (0) | 2013.02.15 |
실행파일이 만들어 지는 과정. (0) | 2013.02.15 |
sprintf 함수, sscanf 함수 (0) | 2013.02.15 |