社区

Linux/Unix社区 帖子详情 很多C语言的代码使用了void main( ) ,其实这是错误的 TomChaos 2007-06-28 05:09:44 在 C89 中,main( ) 是正确的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的:

int main( void )

int main( int argc, char *argv[] )

(参考资料:ISO/IEC 9899:1999 (E) Programming languages — C 5.1.2.2.1 Program startup)

当然,我们也可以做一点小小的改动。例如:char *argv[] 可以写成 char **argv;argv 和 argc 可以改成别的变量名(如 intval 和 charval),不过一定要符合变量的命名规则。

如果你不需要从命令行中获取参数,请用 int main( void ) ;否则请用 int main( int argc, char *argv[] ) 。

main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如操作系统)。

如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在生成的目标文件中(如 exe 文件)加入 return 0 ,表示程序正常退出。不过,我还是建议你最好在 main 函数的最后加上 return 语句,虽然没有这个必要,但这是一个好的习惯。注意,vc6 不会在生成的目标文件中加入 return 0 ,大概是因为 vc6 是 98 年的产品,所以才不支持这个特性。现在明白我为什么建议你最好加上 return 语句了吧!不过,gcc3.2(Linux 下的 C 编译器)会在生成的目标文件中加入 return 0 。

...全文

1248 10 打赏 收藏 很多C语言的代码使用了void main( ) ,其实这是错误的 在 C89 中,main( ) 是正确的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language(《C 程序设计语言》)用的就是 main( )。不过在最新的 C99 标准中,只有以下两种定义方式是正确的: int main( void ) int main( int argc, char *argv[] ) (参考资料:ISO/IEC 9899:1999 (E) Programming languages 复制链接

扫一扫 分享 转发到动态 举报

写回复 配置赞助广告取 消

确 定

用AI写文章 10 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 rzsheng 2007-07-05 打赏举报 回复 好,支持一下楼主, qq273765596 2007-07-04 打赏举报 回复 支持一个啊 sxcong 2007-07-03 打赏举报 回复 main()相当于int main( void ),这个在老的C语言标准里也提到过,上面说的很明白,如果一个函数是int,可以不用显示加上.很多人忽略了这一点,都以为main()相当于void main(),我刚学的时候也这么认识的,后来仔细看C语言标准才发现.

如果采用前者,相当于程序内隐式调用了return ,当然最好还是自己加上.

而void main(),从来就没有这种写法,楼主在哪里见到的? qlsc_cainiao 2007-07-01 打赏举报 回复 养成良好的coding习惯对自己编程水平的提高很有帮助

dai_weitao 2007-06-29 打赏举报 回复 默认会返回0 mymtom 2007-06-29 打赏举报 回复 支持楼主,希望新手学C语言的第一天就知道这一点! TomChaos 2007-06-29 打赏举报 回复 大学上完,我都不知道。因为加了 void 的main()在Turbo C 上是可以执行的,我最近在学Linux,用的是gcc,才明白这些。

大学的老师们,让学生们实践吧 ! yangxiao_jiang 2007-06-29 打赏举报 回复 在windows下dev-c如果直接用main()会出错的。

一定要返回结果。 northeast_02 2007-06-29 打赏举报 回复 哦,是这样,以前在C上从来没用过这个格式,到VC++上才碰见过,原来这个才是标准。。。 sky 2007-06-29 打赏举报 回复 楼主应该把这篇文章发给大学那班老师,他们的技术都太老了,在开发第一线奋战的,这些应该早就知道了。 C语言中void main和int main有什么区别? 区别:

1、有无返回值

void main没有返回值,int main有返回值。

2、返回值类型

int main返回int类型的数据,void main不返回。

但是在C语言推荐写法中,建议使用int main,因为在有的编译器虽然viod main可以通过编译,但在其他编译器就会报错。为了代码拥有更好的可移植性,一般写int main。

补充:

至于什么时候需要哪种写法,没必要较真。可以一律都写成 int main ,然后在方法体中最后加个return 0 ;就行了,这样写基本上所有的编译 C语言---void main()、int main()、main()、return 0 void main()、int main()、main()、return 0 C语言编程中void什么意思,程序设计中遇到的void到底是什么意思 部分编程的初学者都会问"void是什么意思","为什么很多函数前都要加个void".实际上,void最简单的解释就是把0转换成空类型的意思。下面用各个开发语言来详解void1.C语言中的void表示空类型,它跟int,float是同地位的,一般用在没有返回值的函数中,比如你写void main (),主函数完了不用写return 语句,但是如果是int main ()或者是main (),你不写r... 为什么说void main()是错误的 main函数要怎么定义?为什么说void main()是错误的? C语言——int main,main 和 void main;return 先简而言之

1.void 和 int 表明声明不同的主函数返回值,不声明则默认返回值为int整型。

2.int main可移植性强。

3.C语言从来没声明过```void main```,只声明过```main()```。

3.抛弃一切用```void main```编写C程序的习惯!

稍微深入

main函数,又称主函数,作为绝大大部分C程序唯一的入口(比如windows编程中可

Linux/Unix社区

23,215

社区成员

74,539

社区内容

发帖 与我相关 我的任务 Linux/Unix社区 Linux/Unix社区 应用程序开发区 复制链接

扫一扫 分享 确定 社区描述 Linux/Unix社区 应用程序开发区 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章