simple-declaration:
decl-specifier-seqopt init-declarator-listopt ;
decl-specifier-seq不能是可选的.
例如,下面的代码片段无法编译:
x;
如果我在这里是正确的,那么第8.3 / 1段的开头也应该改变:
从:
A list of declarators appears after an optional (Clause 7)
decl-specifier-seq (7.1).
至:
A list of declarators appears after a decl-specifier-seq (7.1).
解决方法
在第7条第3款中:
In a simple-declaration,the optional init-declarator-list can be
omitted only when declaring a class (Clause 9) or enumeration (7.2),
that is,when the decl-specifier-seq contains either a
class-specifier,an elaborated-type-specifier with a class-key (9.1),
or an enum-specifier. In these cases and whenever a class-specifier or
enum-specifier is present in the decl-specifier-seq,the identifiers
in these specifiers are among the names being declared by the
declaration (as class-names,enum-names,or enumerators,depending on
the Syntax). In such cases,and except for the declaration of an
unnamed bit-field (9.6),the decl-specifier-seq shall introduce one or
more names into the program,or shall redeclare a name introduced by a
prevIoUs declaration.
并在第7条第9款中
Only in function declarations for constructors,destructors,and type
conversions can the decl-specifier-seq be omitted.