Defect Report #173

Submission Date: 16 Oct 95
Submittor: BSI
Source: Clive D.W. Feather
Question
Submitted to BSI by Clive D.W. Feather clive@sco.com .
In this Defect Report, identifiers lexically identical to those declared in standard headers refer to the identifiers declared in those standard headers, whether or not the header is explicitly mentioned.
This Defect Report has been prepared with considerable help from Mark Brader, Jutta Degener, Ronald Guilmette, and a person whose employment conditions require anonymity. However, except where stated, opinions expressed or implied should not be assumed to be those of any person other than myself.
Defect Report UK 021: Line numbers
The concept of line number is not clearly defined when a token is split over more than one physical source line.
Subclause 6.8.4 reads in part:
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.
Subclause 6.8.8 reads in part:
__LINE__ - The line number of the current source line (a decimal constant).
Consider the program:
#include stdio.h
#define LNER __LINE__


/* The next statement is on physical source lines 6 to 8 */
int east_coast = __\
LINE\
__;
/*
The next statement is on physical source lines 10 to 13 */
int main_line = L\
N\
E\
R;

int main (void)
{
printf ("%d %d\n", east_coast, main_line);
return 0;
}

In each of the two substitutions, it is unclear whether the line number is the number of new-lines read to the start of the current token, or to the end of the current token, or to a specified point within the current token.
What is the output of this program?
Previous Defect Report < - > Next Defect Report