Next: Initialization
Up: Declarations
Previous: Declarators
The standard uses an optional pointer and
an optional direct_abs_declarator.
These options must be made explicit here in order to avoid a grammar
conflict.
type_name:
specifier_qualifier_list abstract_declarator /
specifier_qualifier_list .
abstract_declarator:
pointer_abstract_declarator /
direct_abstract_declarator .
pointer_abstract_declarator:
'*' type_qualifier_list_opt abstract_declarator .
direct_abstract_declarator:
'(' abstract_declarator ')' /
array_abstract_declarator /
function_abstract_declarator .
array_abstract_declarator:
direct_abstract_declarator '[' constant_exp_opt ']' /
'[' constant_exp_opt ']' .
function_abstract_declarator:
direct_abstract_declarator '(' empty_parameter_type_list ')' /
direct_abstract_declarator
'(' &'Nest[34](`identifier',`0')' parameter_type_list &'Restore[36]' ')' /
'(' empty_parameter_type_list ')' /
'(' &'Nest[34](`identifier',`0')' parameter_type_list &'Restore[36]' ')' .
empty_parameter_type_list: .
This macro is defined in definitions 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, and 27.
This macro is invoked in definition 6.
2008-08-30