From: utzoo!decvax!duke!mcnc!rlgvax!guy Newsgroups: net.lang.c Title: Re: #line feature in C preprocessor Article-I.D.: rlgvax.1069 Posted: Sat Feb 19 03:37:57 1983 Received: Thu Feb 24 07:51:06 1983 I looked at the source to: 1) the V7 version of cpp 2) the 4.1BSD version of cpp 3) the USG UNIX 3.0.1 (System III) version of cpp and my scan *seems* to indicate that this "feature" may be present in all versions. The problem *seems* to be that the only thing that "cpp" does when it sees '#line nnn file' is to write '# nnn file' to the output. It also writes '# nnn file', where here nnn is its internal idea of the current line number and file is its internal idea of the current file, whenever these change. Unfortunately, '#line' does NOT change its internal idea of the current line number or of the current file, it merely causes the directive to the C compiler to be output. It looks like it could be made to reset its internal counters, so I suspect it doesn't for some reason (i.e., it's probably not a bug). As of USG UNIX 5.0 (System V), Our Mother who art in Murray Hill documents both of the major undocumented features of the V7 (John Reiser) C preprocessor. To wit, the "defined()" operator in #if (permitting you to get the equivalent of #ifdef FOO || BAR by saying #if defined(FOO) || defined(BAR) and the __FILE__ and __LINE__ built-in variables. As such, all you people who implemented your own preprocessors should go back and put those features in (especially given that a lot of people have been using them already). Guy Harris RLG Corporation ...!decvax!mcnc!rlgvax!guy