LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 776|回复: 4

main()和子程序的先后问题

[复制链接]
发表于 2005-5-12 11:15:18 | 显示全部楼层 |阅读模式
我喜欢把main()放在前面,而把一些子程序放在后面。但我发现一些经典的程序好像都是子程序在前面而main()放在最后面的。请问这仅仅是习惯问题呢,还是编译后会产生不能的结果(性能不一样)?
发表于 2005-5-12 11:32:25 | 显示全部楼层
放在后面估计是因为她需要调用调用前面定义的函数吧
从gcc3.4开始,调用的函数必须要先声明(c标准要求),如果将main放在最前面,想想你要声明多少函数(而事实上可能这些函数就在本文件的下面有定义)
回复 支持 反对

使用道具 举报

发表于 2005-5-17 15:13:01 | 显示全部楼层
Post by rickxbx
放在后面估计是因为她需要调用调用前面定义的函数吧
从gcc3.4开始,调用的函数必须要先声明(c标准要求),如果将main放在最前面,想想你要声明多少函数(而事实上可能这些函数就在本文件的下面有定义)


如果main放在最后,就可以省去所调用的函数的声明了吗?
回复 支持 反对

使用道具 举报

发表于 2005-5-17 17:12:00 | 显示全部楼层
我还是习惯把每个用的的函数原型都先声明一下,不管main放在哪儿
如果不声明,即使main放在最后,其他的子程序仍然要考虑定义的顺序
所以最后还是先声明后使用,养成好的习惯
回复 支持 反对

使用道具 举报

发表于 2005-5-17 17:34:42 | 显示全部楼层

  1. //main放在最前面,调用f1(),f2()编译器需要先看到f1(),f2()的声明。

  2. void f1();
  3. void f2();


  4. int main()
  5. {
  6.   f1();
  7.   f2();
  8.   return 1;
  9. }

  10. void f1()
  11. {
  12. //your code
  13. }

  14. void f2()
  15. {
  16. //your code
  17. }
复制代码


  1. //main放后面,调用f1(),f2()编译器已经看到看到f1(),f2()的定义了。

  2. void f1()
  3. {
  4. //your code
  5. }

  6. void f2()
  7. {
  8. //your code
  9. }


  10. int main()
  11. {
  12.   f1();
  13.   f2();
  14.   return 1;
  15. }

复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表