int main(void)在C ++中有效吗?

时间:2017-07-01 09:36:38

标签: c++ language-lawyer

C ++标准列出了main的允许形式。它不会将int main(void)列为允许的表单。但是,它通常表明

  

参数列表(void)等同于空参数列表

int main(void)是否为允许的表单?

2 个答案:

答案 0 :(得分:10)

来自 N3936 标准草案:

  

3.6开始和终止

     

3.6.1主要功能

     

2实现不应预定义主函数。这个   功能不得超载。它应具有声明的返回类型   int类型,但其类型是实现定义的。一个   实施应允许两者

     

- ()返回int

的函数      

- 返回int

的函数(int,指向char的指针)      

作为主要类型(8.3.5)。

然后:

  

8.3.5功能

     

4 ...   由单个未命名参数组成的参数列表   非依赖类型void等效于空参数列表。   ...

因此,

awk -F'|' '$2 ~ /^[^a-zA-Z]+$/' file

int main(void) 函数的允许形式。

答案 1 :(得分:0)

除了评论@Some程序员dude和@ Edgar的回答之外,这是 N3936 草案的一部分,它解释了C ++与标准C之间的区别:

  

C.1.7第8条:声明者[diff.decl]

     

8.3.5

     

更改:在C ++中,使用空参数列表声明的函数   没有争论。在C中,空参数列表表示数字和   函数参数的类型是未知的。

     

示例:

     

int f(); //表示C ++中的int f(void)   
// C中的int f(未知)