The #line directive
A preprocessor line control directive supplies line numbers for compiler messages. It causes the compiler to view the line number of the next source line as the specified number.
In order for the compiler to produce meaningful references to line
numbers in preprocessed source, the preprocessor inserts #line directives
where necessary (for example, at the beginning and after the end of
included text).
A file name specification enclosed in double quotation marks can follow the line number. If you specify a file name, the compiler views the next line as part of the specified file. If you do not specify a file name, the compiler views the next line as part of the current source file.
At the C99 language level, the maximum value of the #line preprocessing
directive is 2147483647.
- A fully qualified sequential data set
- A fully qualified PDS or PDSE member
- A z/OS® UNIX System Services path name
#line directive
matches the file contents. The compiler does not check this.In all C and C++ implementations, the token sequence on a #line directive
is subject to macro replacement. After macro replacement, the resulting
character sequence must consist of a decimal constant, optionally
followed by a file name enclosed in double quotation marks.
You can use #line control directives to make the
compiler provide more meaningful error messages. The following example
program uses #line control directives to give each
function an easily recognizable line number:
/**
** This example illustrates #line directives.
**/
#include <stdio.h>
#define LINE200 200
int main(void)
{
func_1();
func_2();
}
#line 100
func_1()
{
printf("Func_1 - the current line number is %d\n",_ _LINE_ _);
}
#line LINE200
func_2()
{
printf("Func_2 - the current line number is %d\n",_ _LINE_ _);
}
Func_1 - the current line number is 102
Func_2 - the current line number is 202
Beginning of C++0x only.
In C++0x, the increased limit for #line directive
from the C99 preprocessor are adopted to provide a common preprocessor
interface for C and C++ compilers. The upper limit of #line <integer> preprocessor
directives has been increased from 32,767 to 2,147,483,647 for the
C++ preprocessor in conformance with the C99 preprocessor. For more
information, see C99 preprocessor features adopted in C++0x.
End of C++0x only.
ILE C++ compiler supports #line directive
only if DBGVIEW(*NONE) takes effective.- __C99_MAX_LINE_NUMBER in the ILE C/C++ Compiler Reference
- DBGVIEW in the ILE C/C++ Compiler Reference
