CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): ehals (없 음)
날 짜 (Date): 2002년 4월 30일 화요일 오전 03시 04분 24초
제 목(Title): Re: C 초보 질문..헉..


The #line Directive
The #line directive tells the preprocessor to change the compiler’s 
internally stored line number and filename to a given line number and 
filename. The compiler uses the line number and filename to refer to 
errors that it finds during compilation. The line number usually refers to 
the current input line, and the filename refers to the current input file. 
The line number is incremented after each line is processed.

Syntax

#line

digit-sequence "filename"opt

The digit-sequence value can be any integer constant. Macro replacement 
can be performed on the preprocessing tokens, but the result must evaluate 
to the correct syntax. The filename can be any combination of characters 
and must be enclosed in double quotation marks (" "). If filename is 
omitted, the previous filename remains unchanged.

You can alter the source line number and filename by writing a #line 
directive. The translator uses the line number and filename to determine 
the values of the predefined macros __FILE__ and __LINE__. You can use 
these macros to insert self-descriptive error messages into the program 
text. For more information on these predefined macros, see Predefined 
Macros.

The __FILE__ macro expands to a string whose contents are the filename, 
surrounded by double quotation marks (" ").

If you change the line number and filename, the compiler ignores the 
previous values and continues processing with the new values. The #line 
directive is typically used by program generators to cause error messages 
to refer to the original source file instead of to the generated program.

The following examples illustrate #line and the __LINE__ and __FILE__ 
macros.

In this statement, the internally stored line number is set to 151 and the 
filename is changed to copy.c.

#line 151 "copy.c"

In this example, the macro ASSERT uses the predefined macros __LINE__ and 
__FILE__ to print an error message about the source file if a given 
“assertion” is not true. 

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}


[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.