Filename and line information
Changes the source code's line number and, optionally, the current file name, in the preprocessor.
Contents |
Syntax
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
Explanation
1) Changes the current preprocessor line number to lineno . Expansions of the macro __LINE__ beyond this point will expand to lineno plus the number of actual source code lines encountered since.
2) Also changes the current preprocessor file name to filename . Expansions of the macro __FILE__ from this point will produce filename .
Any preprocessing tokens (macro constants or expressions) are permitted as arguments to #line as long as they expand to a valid decimal integer optionally following a valid character string.
lineno
must be a sequence of at least one decimal digit (the program is ill-formed, otherwise) and is always interpreted as decimal (even if it starts with
0
).
If
lineno
is
0
or greater than
32767
(until C++11)
2147483647
(since C++11)
, the behavior is undefined.
Notes
This directive is used by some automatic code generation tools which produce C++ source files from a file written in another language. In that case, #line directives may be inserted in the generated C++ file referencing line numbers and the file name of the original (human-editable) source file.
Example
#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5); }
Possible output:
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
References
- C++23 standard (ISO/IEC 14882:2024):
-
- 15.7 Line control [cpp.line]
- C++20 standard (ISO/IEC 14882:2020):
-
- 15.7 Line control [cpp.line]
- C++17 standard (ISO/IEC 14882:2017):
-
- 19.4 Line control [cpp.line]
- C++14 standard (ISO/IEC 14882:2014):
-
- 16.4 Line control [cpp.line]
- C++11 standard (ISO/IEC 14882:2011):
-
- 16.4 Line control [cpp.line]
- C++98 standard (ISO/IEC 14882:1998):
-
- 16.4 Line control [cpp.line]
See also
|
(C++20)
|
a class representing information about the source code, such as file names, line numbers, and function names
(class) |
|
C documentation
for
Filename and line information
|
|