工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 1829|回复: 9

函数声明与否,有什么分别?

[复制链接]
发表于 2007-1-18 17:56 | 显示全部楼层 |阅读模式
我的课程设计的函数没作声明还是可以正常运行。
函数声明与否,有什么分别?
发表于 2007-1-18 18:01 | 显示全部楼层
  1. main(){
  2.     p();//无法通过编译,因为这里被编译器认为是int 型,但下面的定义却定义为void型
  3.   return 0;
  4. }
  5. void p(){

  6. }
复制代码

  1. main(){
  2.     p();//P被默认为int 型,可以通过编译
  3.     return 0;
  4. }
  5. int p(){

  6. }
复制代码

  1. void p();
  2. main(){
  3.     p();//p被声明为void 型了
  4.     return 0;
  5. }
  6. void p(){
  7. }
复制代码

把void 改成任何非int 的类型都一样

[ 本帖最后由 小I 于 2007-1-18 18:13 编辑 ]
回复

使用道具 举报

发表于 2007-1-18 18:03 | 显示全部楼层
1 申明函数是个好习惯
2 函数在被调用前定义而没有声明是可以的
3 函数在被调用前没有定义也没有声明,编译会把它默认为int 型函数
回复

使用道具 举报

发表于 2007-1-18 18:31 | 显示全部楼层
学到了东西。。
我习惯把函数写在前面。。
回复

使用道具 举报

发表于 2007-1-19 03:07 | 显示全部楼层
最好是这样的一个习惯
一些流程控制的函数放一个文件
一些的功能实现的函数放一个文件
然后把函数在一个头文件里面声明
还有自己定义的数据结构也可以放同一个头文件
这样在改的时候对编译很有好处的..

我们工作中的做的东西的源文件是这样命名的:比如XXX是某一模块
数据结构的定义放一个XXX.h
模块的全局变量的定义,模块初始化,以及全局变量等的初始化放在XXX_main.c
流程控制的放在XXX_***.c,(***表示是哪方面的控制,一模块涉及多方面的流程控制的话就分几个这样的文件)
还有就是功能实现的函数,就是做具体工作的函数,一般放在XXX_Func.c(或者XXX_Function.c)
然后这些个流程控制,功能实现的函数的声明都放在XXX_Func.h里面,然后在其他文件里面包含这个文件

这样一个是很清晰,有条理,知道哪个文件是做什么,
这样修改的时候也会感觉很好,感觉条理很好梳理.

然后还有一个就是修改的时候编译的效率会比较高
当你只是修改一个函数的内部实现时,他会只重新编译这个文件,而不是所有的都重新编译一次

[ 本帖最后由 jinry 于 2007-1-19 03:11 编辑 ]
回复

使用道具 举报

发表于 2007-1-19 03:23 | 显示全部楼层
2楼的,貌似第一段的代码是可以在VC6.0里面编译连接的..
只是会出现一个函数未定义,默认为int的一个告警..

但是运行结果怎么样就没怎么试...
回复

使用道具 举报

发表于 2007-1-19 13:45 | 显示全部楼层
这个没真正试过..

[ 本帖最后由 小I 于 2007-1-19 13:46 编辑 ]
回复

使用道具 举报

发表于 2007-1-20 16:22 | 显示全部楼层
顶一下蝎子.

现在加不了分.以后补上.
回复

使用道具 举报

 楼主| 发表于 2007-2-1 11:59 | 显示全部楼层
我用win-tc,无声明也可以。
我的函数是在主函数后定义的,而且大部分不是int型的
回复

使用道具 举报

发表于 2007-2-2 20:29 | 显示全部楼层
hjack还没有帮我加分...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-31 05:34

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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