在阅读标准时,我很惊讶地看到,实际上,名称在声明中是可选的:
struct Magic {};
int main() {
int; // well-formed
Magic; // well-formed
}对于那些有兴趣阅读标准的人来说,这是因为在一个简单的声明中,init声明者列表是可选的。这是一个演示。
所以我真的很想知道为什么这是允许的。我为什么要这么做?对我来说真的毫无意义。我的推理是这样的,因为如果没有意义,为什么要允许呢?
发布于 2018-01-10 17:20:22
根据C++标准(7项声明)
5在简单声明中,只有在声明类(第9条)或枚举(7.2)时,才能省略可选的init声明符列表,也就是说,当decl-说明符-seq包含类说明符、具有类键(9.1)的详细类型说明符或枚举说明符.时.
因此,这个代码
int main() {
int; // well-formed
Magic; // well-formed
}是畸形的。
此外,按照3.1节第2段的规定,这些格式不良的声明是定义,因此显然是没有意义的。
https://stackoverflow.com/questions/48192615
复制相似问题