mod.std.c Digest V16#9
Orlando Sotomayor-Diaz
osd at hou2d.UUCP
Tue May 13 23:09:47 AEST 1986
From: Orlando Sotomayor-Diaz (The Moderator) <cbosgd!std-c>
mod.std.c Digest Tue, 13 May 86 Volume 16 : Issue 9
Today's Topics:
Differences from April 1985 to February 1986 Draft Standard, Part 8
----------------------------------------------------------------------
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 8
To: cbosgd!std-c%utcsri
# C.5.6 Initialization
<--O A declarator may include an initializer that specifies an initial
<--O value for the object whose identifier is being declared.
<--O ... Any object may be initialized.
N--> Any declaration that defines an object may include an initializer
N--> that specifies its initial value.
# C.5.6 Initialization
N--> Initializers that are neither flat (no interior brackets) nor
N--> fully bracketed are ambiguous. ***> The draft shall specify the
N--> correct category for this situation. <***
Remark: In other words, they haven't decided.
# C.6 STATEMENTS
<--O Completion of the execution of a statement is a sequence point.
<--O Forward references: compound statement, or block (#C.6.2), func-
<--O tion definitions (#C.7.1).
N--> A "full expression" is an expression that is not part of another
N--> expression. Each of the following is a full expression: an ini-
N--> tializer of an object that has automatic storage duration; the
N--> expression in an expression statement; the controlling expression
N--> of a selection statement (if or switch); the controlling expres-
N--> sion of an iteration statement (while, do, or for). Completion
N--> of the evaluation of a full expression is a sequence point.
N--> Forward references: expression and null statements (#C.6.3),
N--> selection statements (#C.6.4), iteration statements (#C.6.5).
# C.6.2 Compound statement, or block
* An object declared extern {--> inside a block} shall not be ini-
* tialized in the declaration, as storage for it is {allocated -->
defined} elsewhere.
# C.6.4.1 The if statement
* If the first substatement is reached via a {named -->} label, the
second substatement is not executed.
# C.6.4.2 The switch statement
<--O The implementation must allow at least 255 case values in a
<--O switch statement.
N--> As discussed previously (#B.2.4), the implementation may limit
N--> the number of case values in a switch statement.
# C.6.6.3 The break statement
N--> A break statement may appear only in a switch body or loop body.
# C.6.6.4 The return statement
N--> A return statement with an expression may not appear in a func-
N--> tion declared as returning type void.
# C.6.6.4 The return statement
Reaching the } that terminates a function is equivalent to exe-
* cuting a return {with no returned value --> statement without an
expression}.
# C.7.1 Function definitions
<--O The following constraints apply only to a parameter identifier
<--O list. Only the identifiers in the parameter list may be declared
<--O in the declaration list. An identifier declared as a typedef
<--O name must not be redeclared as a formal parameter.
N--> Even if the type specifier is a typedef name that declares the
N--> function as having no parameters, the parentheses that bound the
N--> (empty) parameter identifier list may not be omitted from the de-
N--> clarator.
N--> The only storage-class specifier allowed in the declaration of a
N--> formal parameter is register.
N--> If the declarator is a function prototype declarator, no declara-
N--> tion list may follow. If the declarator is an identifier list,
N--> only the identifiers it names may be declared in the declaration
N--> list; an identifier declared as a typedef name shall not be rede-
N--> clared as a formal parameter.
# C.7.1 Function definitions
If a function prototype is in scope when the function is defined
* {, --> but} a semantically equivalent prototype {must be --> is
* not} in scope everywhere the function is called {-->, the
* behavior is undefined}. {--> If a function that accepts a vari-
able number of arguments is defined without the ellipsis notation
in its prototype, the behavior is undefined.}
If no function prototype is in scope when the function is de-
* fined, the {following -->} default {--> argument} conversions are
* {--> assumed to have been} applied {--> to each call}. ...
# C.8 PREPROCESSING DIRECTIVES
Remark: The subsections C.8.1 through C.8.3 have been reordered,
and all the syntax rules have been collected at the beginning of
section C.8.
# C.8 PREPROCESSING DIRECTIVES
Remark: Again, the notation [opt] below represents a subscript
opt, which means optional.
N--> preprocessing-file:
N--> group
N--> preprocessing-file group
N--> group:
N--> group-part
N--> group group-part
N--> group-part:
N--> tokens[opt] new-line
N--> if-section
N--> control-line
* {token-sequence --> tokens}:
token
* {token-sequence --> tokens} token
N--> if-section:
N--> if-group elif-groups[opt] else-group[opt] endif-line
N--> if-group:
N--> # if constant-expression new-line group[opt]
N--> # ifdef identifier new-line group[opt]
N--> # ifndef identifier new-line group[opt]
N--> elif-groups:
N--> elif-group
N--> elif-groups elif-group
N--> elif-group:
N--> # elif constant-expression new-line group[opt]
N--> else-group:
N--> # else new-line group[opt]
N--> endif-line:
N--> # endif new-line
* {--> control-line:}
* # include {<s-char-sequence> -->
<x-char-sequence>} new-line
* # include {"s-char-sequence" -->
"x-char-sequence"} new-line
# include identifier new-line
* # define identifier {token-sequence -->
tokens}[opt] new-line
# define identifier lparen identifier-list[opt]
* {token-sequence --> tokens}[opt]
) new-line
# undef identifier new-line
# line digit-sequence string-literal[opt]
new-line
# pragma x-char-sequence new-line
# new-line
Remark: In the above syntax for "control-line", each entry begin-
ning with # is supposed to be written on one line. The multiple
lines in this document represent continuations rather than alter-
natives.
x-char-sequence:
x-char
x-char-sequence x-char
x-char:
any character in the source character set except
the new-line character
Remark: An "s-char-sequence", which was used in the old version,
is defined in #C.1.4; it is whatever can be between the double-
quotes of a string literal.
N--> lparen:
N--> the left-parenthesis character without preceding
N--> white-space
new-line:
the new-line character
<--O A preprocessing directive may appear anywhere. It is terminated
<--O by the next new-line character, which is not considered to be
<--O part of the directive.
<--O There may be any number of space and horizontal-tab characters
<--O between the # token and the identifier that constitutes the next
<--O token, and before the new-line character that terminates the
<--O directive.
N--> In this phase of processing, tokens may be separated by any
N--> number of space and horizontal-tab characters.
------------------------------
End of mod.std.c Digest - Tue, 13 May 86 09:09:25 EDT
******************************
USENET -> posting only through cbosgd!std-c.
ARPA -> ... through cbosgd!std-c at BERKELEY.ARPA (NOT to INFO-C)
In all cases, you may also reply to the author(s) above.
More information about the Mod.std.c
mailing list