社区
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写文章