Filename and line information
전처리기에서 현재 줄 번호와 파일 이름을 변경합니다.
목차 |
구문
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
설명
어떤 전처리 토큰(매크로 상수 또는 표현식)이라도 유효한 10진 정수와 그 뒤에 올 수 있는 유효한 문자열로 확장되는 한, #line 인수로 허용됩니다.
lineno
는 적어도 하나 이상의 십진수 숫자로 이루어진 시퀀스여야 합니다(그렇지 않으면 프로그램의 형식이 잘못됨). 항상 십진수로 해석되며(심지어
0
으로 시작하는 경우에도).
만약
lineno
가
0
이거나
32767
(C99 이전)
2147483647
(C99 이후)
보다 큰 경우, 동작은 정의되지 않습니다.
참고 사항
이 지시문은 다른 언어로 작성된 파일에서 C 소스 파일을 생성하는 일부 자동 코드 생성 도구에서 사용됩니다. 이 경우, #line 지시문이 생성된 C 파일에 삽입되어 원본(사람이 편집 가능한) 소스 파일의 줄 번호와 파일 이름을 참조할 수 있습니다.
지시문 다음에 오는 줄 번호 #line __LINE__ 는 지정되지 않습니다 (이 경우 __LINE__ 가 확장될 수 있는 두 가지 가능한 값이 있습니다: 지금까지 확인된 줄바꿈 수, 또는 지금까지 확인된 줄바꿈 수에 #line 지시문을 종료하는 줄바꿈을 더한 값). 이는 소급 적용되는 DR 464 의 결과입니다.
예제
#include <assert.h> #define FNAME "test.c" int main(void) { #line 777 FNAME assert(2+2 == 5); }
가능한 출력:
test: test.c:777: int main(): Assertion `2+2 == 5' failed.
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 6.10.4 Line control (p: 126)
-
- J.1 Unspecified behavior
- C11 표준 (ISO/IEC 9899:2011):
-
- 6.10.4 행 제어 (p: 173)
- C99 표준 (ISO/IEC 9899:1999):
-
- 6.10.4 행 제어 (p: 158)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 3.8.4 행 제어
참고 항목
|
C++ 문서
에 대한
파일명 및 줄 정보
|