Filename and line information
Changes the current line number and file name in the preprocessor.
Contents |
[edit] Syntax
#line lineno
|
(1) | ||||||||
#line lineno " filename"
|
(2) | ||||||||
[edit] Explanation
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.
[edit] 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.
The line number following the directive #line __LINE__ is implementation-defined (there are two possible values that __LINE__ can expand to in this case: number of endlines seen so far, or number of endlines seen so far plus the endline that ends the #line directive)
[edit] Example
#include <assert.h> #define FNAME "test.c" int main(void) { #line 777 FNAME assert(2+2 == 5); }
Possible output:
test: test.c:777: int main(): Assertion `2+2 == 5' failed.
[edit] References
- C11 standard (ISO/IEC 9899:2011):
-
- 6.10.4 Line control (p: 173)
- C99 standard (ISO/IEC 9899:1999):
-
- 6.10.4 Line control (p: 158)
- C89/C90 standard (ISO/IEC 9899:1990):
-
- 3.8.4 Line control
[edit] See also
C++ documentation for Filename and line information
|