osd@hou2d.UUCP (Orlando Sotomayor-Diaz) (05/13/86)
From: Orlando Sotomayor-Diaz (The Moderator) <cbosgd!std-c> mod.std.c Digest Tue, 13 May 86 Volume 16 : Issue 10 Today's Topics: Differences from April 1985 to February 1986 Draft Standard, Part 9 ---------------------------------------------------------------------- Date: Sun, 27 Apr 86 01:17:06 est From: <ihnp4!utcsri!lsuc!msb%utcsri> Subject: Differences from April 1985 to February 1986 Draft Standard, Part 9 To: cbosgd!std-c%utcsri # {C.8.3 --> C.8.1} Conditional inclusion Preprocessing directives of the forms # if constant-expression new-line group[opt] * {--> # elif constant-expression new-line group[opt]} check whether the controlling constant expression evaluates to non-zero. # {C.8.3 --> C.8.1} Conditional inclusion Each directive's condition is checked in order. If it evaluates * to false (0), the {program text that follows it --> group that it * controls} is skipped ... The first {section of program text --> group} whose control condition evaluates to true (non-zero) is processed. If none of the conditions evaluates to true, and * there is a #else directive, the {program text between the #else and the #endif --> group controlled by the #else} is processed; * lacking a #else directive, all the {program text through --> groups until} the #endif are skipped. # {C.8.1 --> C.8.2} Source file inclusion N--> The character sequence in the form of preprocessing directive N--> # include <x-char-sequence> new-line N--> shall not include a > character. The character sequence in the N--> form of preprocessing directive N--> # include "x-char-sequence" new-line N--> shall not include a " character. # {C.8.1 --> C.8.2} Source file inclusion The named source file is searched for in association with the * {--> original} source file {containing the #include directive * -->}. {This implementation-defined capability presumes that oth- er named source files may be associated in some way with the source file containing the text being read, typically by means of a file system with named files organized into "directories". -->} * If this {--> implementation-defined} capability is not supported ... # {C.8.1 --> C.8.2} Source file inclusion * Failure in processing a #include directive is {an error --> equivalent to a violation of a syntax rule}. # {C.8.2 --> C.8.3} Macro replacement * The arguments in the invocation are {--> (possibly empty)} se- quences of tokens separated by comma tokens ... # {C.8.2 --> C.8.3} Macro replacement Each occurrence in the definition of a formal parameter is re- * placed by the corresponding argument from the invocation {-->, with all macros replaced in each argument}. # {C.8.2 --> C.8.3} Macro replacement If a formal parameter in the definition follows a # token, both are replaced by the corresponding argument from the invocation, preceded and followed by a double-quote character to create a * string literal. {--> Whether} white space between tokens in the * argument {may be --> is retained in the string or} replaced by a * single space character {--> is implementation-defined}. White space preceding the first token or following the last token is * deleted. {--> A backslash character is inserted before each double-quote character in the argument.} # {C.8.2 --> C.8.3} Macro replacement * A macro definition lasts ... {--> until a corresponding #undef directive is encountered or (if none is encountered)} until the end of the source file ... # {C.8.2 --> C.8.3} Macro replacement The replacement token sequence is reexamined for more macro names * {-->, which are themselves replaced and rescanned}. # {C.8.2 --> C.8.3} Macro replacement After all replacements have taken place, each instance in the de- * finition of a ## {token --> operator} is deleted, and the tokens * preceding and following it are concatenated. {--> If the result is not a valid token, the behavior is undefined.} # C.8.4 Line control <--O The predefined macro name __LINE__ has the value of the line <--O number of the current source line (a decimal constant). The <--O predefined macro name __FILE__ has the value of the presumed name <--O of the source file (a string literal). # {--> C.8.7 Predefined macro names} N--> The following macro names shall be defined by the implementation N--> prior to the beginning of translation: N--> __LINE__ The line number of the current source line (a decimal N--> constant). N--> __FILE__ The presumed name of the source file (a string N--> literal). N--> __DATE__ The date of translation of the source file as a N--> string literal of the form "Mmm dd yyyy", where the N--> names of the months are the same as those generated N--> by the asctime function. N--> __TIME__ The time of translation of the source file as a N--> string literal of the form "hh:mm:ss". N--> No other macro names shall be predefined. N--> Forward references: the asctime function (#D.12.3.1). # {--> C.9 FUTURE DIRECTIONS} # {--> C.9.1 Character escape sequences} N--> Lower-case letters as escape sequences are reserved for future N--> standardization. Other characters may be used in extensions. # {--> C.9.2 Function declarations} N--> The use of function declarations with empty parentheses (not N--> prototype-format parameter-type declarations) is deprecated. # {--> C.9.3 Function definitions} N--> The use of function definitions with separate parameter identif- N--> ier and declaration lists (not prototype-format parameter type N--> and identifier declarations) is deprecated. ------------------------------ End of mod.std.c Digest - Tue, 13 May 86 09:09:55 EDT ****************************** USENET -> posting only through cbosgd!std-c. ARPA -> ... through cbosgd!std-c@BERKELEY.ARPA (NOT to INFO-C) In all cases, you may also reply to the author(s) above.