相关疑难解决方法(0)

为什么`int;`在C中编译好,但在C++中没编译?

请考虑以下程序(请参阅此处的实时演示).

#include <stdio.h>
int main(void)
{
      int ;  // Missing variable name
      puts("Surprise");
}
Run Code Online (Sandbox Code Playgroud)

我的编译器gcc 4.8.1给出了以下警告:

[警告]空声明中无用的类型名称[默认启用]

为什么编译好?我不应该得到编译错误吗?当我将它编译为C++程序时,g ++ 4.8.1给出以下错误:

[错误]声明没有声明任何内容[-fpermissive]

c c++ gcc variable-declaration language-lawyer

57
推荐指数
3
解决办法
4532
查看次数

为什么允许没有名字的声明?

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

struct Magic {};
int main() {
  int; // well-formed
  Magic; // well-formed
}
Run Code Online (Sandbox Code Playgroud)

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

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

c++ declaration definition c++11

10
推荐指数
1
解决办法
770
查看次数