首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不允许它有一个没有名字的声明?

为什么不允许它有一个没有名字的声明?
EN

Stack Overflow用户
提问于 2018-01-10 17:06:26
回答 1查看 902关注 0票数 10

在阅读标准时,我很惊讶地看到,实际上,名称在声明中是可选的:

代码语言:javascript
复制
struct Magic {};
int main() {
  int; // well-formed
  Magic; // well-formed
}

对于那些有兴趣阅读标准的人来说,这是因为在一个简单的声明中,init声明者列表是可选的。这是一个演示

所以我真的很想知道为什么这是允许的。我为什么要这么做?对我来说真的毫无意义。我的推理是这样的,因为如果没有意义,为什么要允许呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 17:20:22

根据C++标准(7项声明)

5在简单声明中,只有在声明类(第9条)或枚举(7.2)时,才能省略可选的init声明符列表,也就是说,当decl-说明符-seq包含类说明符、具有类键(9.1)的详细类型说明符或枚举说明符.时.

因此,这个代码

代码语言:javascript
复制
int main() {
  int; // well-formed
  Magic; // well-formed
}

是畸形的。

此外,按照3.1节第2段的规定,这些格式不良的声明是定义,因此显然是没有意义的。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48192615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档