[Neal Norwitz] > I always thought you could have whitespace between the '#' and the > directive name, but not before the '#'. According to everything I > read, you can have spaces before the '#', tabs are less clear. I > didn't find any info about which standard they are referring to. The C standards aren't available for free, but the C99 standard is cheap. It's quite clear. A preprocessing directive consists of a sequence of preprocessing tokens that begins with a # preprocessing token that (at the start of translation phase 4) is either the first character in the source file (optionally after white space containing no new-line characters) or that follows white space containing at least one new-line character, and is ended by the next new-line character. A new-line character ends the preprocessing directive even if it occurs within what would otherwise be an invocation of a function- like macro. Later: The only white-space characters that shall appear between preprocessing tokens within a preprocessing directive (from just after the introducing # preprocessing token through just before the terminating new-line character) are space and horizontal-tab (including spaces that have replaced comments or possibly other white-space characters in translation phase 3). So you can actually have any whitespace characters before the #, but only space and tab after it. I used to have a bootleg C89 standard on my drive, but can't seem to find it. I doubt it's different here, but don't know for sure. The C99 Rationale (not part of the C99 standard) says: Different implementations have had different notions about whether white space is permissible before and/or after the # signalling a preprocessor line. The C89 Committee decided to allow any white space before the #, and horizontal white space (spaces or tabs) between the # and the directive, since the white space introduces no ambiguity, causes no particular processing problems, and allows maximum flexibility in coding style. Note that similar considerations apply for comments, which are reduced to white space early in the phases of translation. This strongly implies that the same rules held in C89.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4