Namespaces
Variants

Filename and line information

From cppreference.net
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements (loops)
Jump statements
Functions
Function declaration
Lambda function expression
inline specifier
Dynamic exception specifications ( until C++17* )
noexcept specifier (C++11)
Exceptions
Namespaces
Types
Specifiers
constexpr (C++11)
consteval (C++20)
constinit (C++20)
Storage duration specifiers
Initialization
Expressions
Alternative representations
Literals
Boolean - Integer - Floating-point
Character - String - nullptr (C++11)
User-defined (C++11)
Utilities
Attributes (C++11)
Types
typedef declaration
Type alias declaration (C++11)
Casts
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
Miscellaneous

전처리기에서 소스 코드의 줄 번호와 선택적으로 현재 파일 이름을 변경합니다.

목차

구문

#line lineno (1)
#line lineno " filename " (2)

설명

1) 현재 전처리기 줄 번호를 lineno 로 변경합니다. 이 지점 이후의 __LINE__ 매크로 확장은 lineno 에 지금까지 실제로 마주친 소스 코드 줄 수를 더한 값으로 확장됩니다.

2) 또한 현재 전처리기 파일 이름을 filename 으로 변경합니다. 이 시점부터 __FILE__ 매크로의 확장은 filename 을 생성합니다.

모든 전처리 토큰(매크로 상수 또는 표현식)은 유효한 10진수 정수와 선택적으로 유효한 문자열이 뒤따르는 형태로 확장되는 한, #line 의 인수로 허용됩니다.

lineno 는 적어도 하나 이상의 십진수 숫자로 이루어진 시퀀스여야 합니다(그렇지 않으면 프로그램이 잘못 형성됨). 항상 십진수로 해석됩니다(심지어 0 으로 시작하는 경우에도).

만약 lineno 0 이거나 32767 (until C++11) 2147483647 (since C++11) 보다 큰 경우, 동작은 정의되지 않습니다.

참고 사항

이 지시자는 다른 언어로 작성된 파일로부터 C++ 소스 파일을 생성하는 일부 자동 코드 생성 도구에서 사용됩니다. 이 경우, #line 지시문이 생성된 C++ 파일에 삽입되어 원본(사용자가 편집 가능한) 소스 파일의 줄 번호와 파일 이름을 참조할 수 있습니다.

예제

#include <cassert>
#define FNAME "test.cc"
int main()
{
#line 777 FNAME
        assert(2+2 == 5);
}

가능한 출력:

test: test.cc:777: int main(): Assertion `2+2 == 5' failed.

참고문헌

  • C++23 표준 (ISO/IEC 14882:2024):
  • 15.7 라인 제어 [cpp.line]
  • C++20 표준 (ISO/IEC 14882:2020):
  • 15.7 라인 제어 [cpp.line]
  • C++17 표준 (ISO/IEC 14882:2017):
  • 19.4 라인 제어 [cpp.line]
  • C++14 표준(ISO/IEC 14882:2014):
  • 16.4 라인 제어 [cpp.line]
  • C++11 표준 (ISO/IEC 14882:2011):
  • 16.4 라인 제어 [cpp.line]
  • C++98 표준 (ISO/IEC 14882:1998):
  • 16.4 라인 제어 [cpp.line]

참고 항목

파일 이름, 줄 번호, 함수 이름과 같은 소스 코드 정보를 나타내는 클래스
(클래스)
C documentation for 파일 이름 및 줄 정보