declarator: pointeropt direct-declarator
direct-declarator: identifier ( declarator ) direct-declarator [ type-qualifier-listopt assignment-expressionopt ] direct-declarator [ static type-qualifier-listopt assignment-expression ] direct-declarator [ type-qualifier-list static assignment-expression ] direct-declarator [ type-qualifier-listopt * ] direct-declarator ( parameter-type-list ) direct-declarator ( identifier-listopt )
pointer: * type-qualifier-listopt * type-qualifier-listopt pointer
type-qualifier-list: type-qualifier type-qualifier-list type-qualifier
parameter-type-list: parameter-list parameter-list , ...
parameter-list: parameter-declaration parameter-list , parameter-declaration
parameter-declaration: declaration-specifiers declarator declaration-specifiers abstract-declaratoropt
identifier-list: identifier identifier-list , identifier
1538 Each declarator declares one identifier, and asserts that when an operand of the same form as the declarator appears in an expression, it designates a function or object with the scope, storage duration, and type indicated by the declaration specifiers.
1539 A full declarator is a declarator that is not part of another declarator.
1540 The end of a full declarator is a sequence point.
1541 If the nested sequence of declarators in a full declarator contains a variable length array type, the type specified by the full declarator is said to be variably modified.
1542 In the following subclauses, consider a declaration
T D1
where
1543 The type specified for the identifier ident in the various forms of declarator is described inductively using this notation.
1544
If, in the declaration
identifier
then the type specified for ident is T.
1545
If, in the declaration
( D )
then ident has the type specified by the declaration
1546 Thus, a declarator in parentheses is identical to the unparenthesized declarator, but the binding of complicated declarators may be altered by parentheses.
1547
As discussed in 5.2.4.1, an implementation may limit the number of
pointer, array, and function declarators that modify an arithmetic,
structure, union, or incomplete type, either directly or via one or
more
1548 Forward references: array declarators (6.7.5.2), type definitions (6.7.7).
Next
Created at: 2005-06-29 02:19:02
The text from WG14/N1124 is copyright © ISO