type-name: specifier-qualifier-list abstract-declaratoropt abstract-declarator: pointer pointeropt direct-abstract-declarator
direct-abstract-declarator:
( abstract-declarator ) direct-abstract-declaratoropt [ assignment-expressionopt ] direct-abstract-declaratoropt [ * ] direct-abstract-declaratoropt ( parameter-type-listopt )
1614 In several contexts, it is necessary to specify a type.
1615 This is accomplished using a type name, which is syntactically a declaration for a function or an object of that type that omits the identifier.126)
1616 EXAMPLE The constructions
(a) int
(b) int *
(c) int *[3]
(d) int (*)[3]
(e) int (*)[*]
(f) int *()
(g) int (*)(void)
(h) int (*const [])(unsigned int, ...)
name respectively the types (a)
1617 126) As indicated by the syntax, empty parentheses in a type name are interpreted as function with no parameter specification, rather than redundant parentheses around the omitted identifier.
Next
Created at: 2005-06-29 02:19:02
The text from WG14/N1124 is copyright © ISO