The compiler keeps track of information about line numbers in each file involved in the compilation, and uses the line number when issuing diagnostic messages to the terminal or, when compiling in batch mode, to a log file.
The #line
directive can be used to alter the line
numbers assigned to source code. This directive gives a new line
number to the following line, which is then incremented to derive
the line number for subsequent lines. The directive can also
specify a new file specification for the program source file. The
#line
directive does not change the line numbers in
your compilation listing, only the line numbers given in diagnostic
messages sent to the terminal screen or log file. This directive is
useful for referring to original source files that are preprocessed
into C code.
The #line
directive has three forms:
#line integer-constant newline
#line integer-constant "filename" newline
#line pp-tokens newline
In the first two forms, the compiler gives the line following a
#line
directive the number specified by the integer
constant. The optional filename in quotation marks
indicates the name of the source file that the compiler will provide
in its diagnostic messages. If the file name is omitted, the file
name used is the name of the current source file or the last file
name specified in a previous #line
directive.
In the third form, macros in the #line
directive are
expanded before it is interpreted. This allows a macro call to
expand into the integer-constant, filename, or
both. The resulting #line
directive must match one of
the other two forms, and is then processed as appropriate.