| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 597 人关注过本帖
标题:int main(void) //也可以这样表达吗? [em15]
只看楼主 加入收藏
awaysonline
Rank: 1
等 级:新手上路
帖 子:14
专家分:6
注 册:2014-2-11
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:9 
int main(void) //也可以这样表达吗? [em15]
int main(void)    //也可以这样表达吗?
2014-02-12 22:28
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:10 
不标准

DO IT YOURSELF !
2014-02-12 22:29
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:10 
编译可以通过吧,void 没参数。

想抽苏烟了。
2014-02-12 23:09
a83533774
Rank: 1
等 级:新手上路
帖 子:8
专家分:2
注 册:2014-1-27
收藏
得分:0 
可以这样表达。。与 int main()相同
2014-02-12 23:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 2楼 wp231957
int main(void) 恰恰才是标准的

按C标准,只有两种合法的写法:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

按C++标准,也只有两种合法的写法:
int main() { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

两者完全一致,因为在C++中形参为空等同于形参为void(注:C中形参为空等同于形参为...,而不是void)

C中写成int main()之所以能编译通过,是因为C语言的函数链接符仅由函数名即调用约定来生成(相当于C++中的extern "C"),举个例子,以下代码代码能编译链接成功
程序代码:
void foo();

int main( double x )
{
    foo( 1 );
}

void foo( int a, int b )
{
}
C++因为支持重载,所以函数链接符和形参也有关系,但对于main函数,必须和C语言保持一致(否则无法链接),所以仅就 int main( double x ) {} 而言,也是可以编译通过的
收到的鲜花
  • aa13639605182014-02-14 19:41 送鲜花  1朵   附言:我很赞同
2014-02-13 12:02
fl8962
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:539
专家分:2471
注 册:2012-10-17
收藏
得分:0 
回复 5楼 rjsp
还是r版厉害!!!

想抽苏烟了。
2014-02-13 13:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用rjsp在2014-2-13 12:02:48的发言:

int main(void) 恰恰才是标准的

按C标准,只有两种合法的写法:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

按C++标准,也只有两种合法的写法:
int main() { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

两者完全一致,因为在C++中形参为空等同于形参为void(注:C中形参为空等同于形参为...,而不是void)

C中写成int main()之所以能编译通过,是因为C语言的函数链接符仅由函数名即调用约定来生成(相当于C++中的extern "C"),举个例子,以下代码代码能编译链接成功
void foo();
 
int main( double x )
{
    foo( 1 );
}
 
void foo( int a, int b )
{
}C++因为支持重载,所以函数链接符和形参也有关系,但对于main函数,必须和C语言保持一致(否则无法链接),所以仅就 int main( double x ) {} 而言,也是可以编译通过的

+65535

膜拜大神 我一直根据标准 写成int main(void)
2014-02-13 15:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用rjsp在2014-2-13 12:02:48的发言:

int main(void) 恰恰才是标准的

按C标准,只有两种合法的写法:
int main(void) { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

按C++标准,也只有两种合法的写法:
int main() { /* ... */ }
int main(int argc, char *argv[]) { /* ... */ }

两者完全一致,因为在C++中形参为空等同于形参为void(注:C中形参为空等同于形参为...,而不是void)

C中写成int main()之所以能编译通过,是因为C语言的函数链接符仅由函数名即调用约定来生成(相当于C++中的extern "C"),举个例子,以下代码代码能编译链接成功


呵,我记错了   谢谢了
void foo();

int main( double x )
{
    foo( 1 );
}

void foo( int a, int b )
{
}C++因为支持重载,所以函数链接符和形参也有关系,但对于main函数,必须和C语言保持一致(否则无法链接),所以仅就 int main( double x ) {} 而言,也是可以编译通过的

DO IT YOURSELF !
2014-02-13 16:44
aa1363960518
Rank: 1
等 级:新手上路
帖 子:4
专家分:7
注 册:2014-2-13
收藏
得分:0 
以下是引用zklhp在2014-2-13 15:35:52的发言:


+65535

膜拜大神 我一直根据标准 写成int main(void)

你们都是大神= =长见识了
2014-02-14 19:42
chuang灬创
Rank: 2
等 级:论坛游民
帖 子:9
专家分:11
注 册:2014-1-2
收藏
得分:0 
都是大神
2014-02-14 20:57
快速回复:int main(void) //也可以这样表达吗? [em15]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.107615 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved