Mantorok Redgormor wrote:
what is the purpose of the #line directive?
how is it suppose to be used?
From N869:
6.10.4 Line control
Constraints
[#1] The string literal of a #line directive, if present,
shall be a character string literal.
Semantics
[#2] The line number of the current source line is one
greater than the number of new-line characters read or
introduced in translation phase 1 (5.1.1.2) while processing
the source file to the current token.
[#3] A preprocessing directive of the form
# line digit-sequence new-line
causes the implementation to behave as if the following
sequence of source lines begins with a source line that has
a line number as specified by the digit sequence
(interpreted as a decimal integer). The digit sequence
shall not specify zero, nor a number greater than
2147483647.
[#4] A preprocessing directive of the form
# line digit-sequence "s-char-sequence-opt" new-line
sets the presumed line number similarly and changes the
presumed name of the source file to be the contents of the
character string literal.
[#5] A preprocessing directive of the form
# line pp-tokens new-line
(that does not match one of the two previous forms) is
permitted. The preprocessing tokens after line on the
directive are processed just as in normal text (each
identifier currently defined as a macro name is replaced by
its replacement list of preprocessing tokens). The
directive resulting after all replacements shall match one
of the two previous forms and is then processed as
appropriate.
In other words it can be used to play games with the compilers
opinion of the current file name and the current source line
number.
--
Chuck F (cb********@yahoo.com) (cb********@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!