'#pragma 및 #line'에 해당되는 글 1건

  1. 2013.02.15 #error, #pragma 및 #line

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
Posted by scii
: