头文件

[复制链接]
2821|11
 楼主| bai4004 发表于 2007-4-2 16:31 | 显示全部楼层 |阅读模式
全局变量的定义在.c定义,在.h中extern声明。

那么一个函数呢?
比如main.c 里面要调用timer.c里面的delay()函数;
在timer.c里面定义
void delay(void);函数
那么在delay.h里面该怎么声明?
是void delay(void);还是要加extern?extern void delay(void);
有点糊涂了
xiaoyu9632 发表于 2007-4-2 16:34 | 显示全部楼层

呵呵

简单,在主文件中的头部利用include声明
 楼主| bai4004 发表于 2007-4-2 16:42 | 显示全部楼层

在.h里加不加extern

谢了,我知道当然得在main.c里面用#include 

我想知道在delay.h里面加不加extern
 楼主| bai4004 发表于 2007-4-2 18:27 | 显示全部楼层

我觉得应该加

今天看前辈留下来的程序,函数在.h里并没有加extern来声明,而在其他函数里也调用了。我有些不解。
既然变量在.h 里定义会重复定义,那么函数也应该是一样的呀。
应该加extern声明才对呀。
大家的意见呢
uc301 发表于 2007-4-2 20:21 | 显示全部楼层
HWM 发表于 2007-4-2 20:32 | 显示全部楼层

不用加

ayb_ice 发表于 2007-4-3 08:19 | 显示全部楼层

随便说说

  LZ看来是菜鸟,看看书...
gezhi 发表于 2007-4-3 08:20 | 显示全部楼层

晕倒!

有这么口径不一致的么,当然要加了!
还有一点我要提醒下楼主,自己试验一下不就行了吗,还要来问。
ayb_ice 发表于 2007-4-3 08:27 | 显示全部楼层

再啰嗦一句

  变量在某个C中定义可以直接使用,在其它C中使用就要加声明extern...
  注意: C的头文件是C本身的一部分,只是为了书写方便而分开写...
  这样说应该明白了吧...
 楼主| bai4004 发表于 2007-4-3 09:18 | 显示全部楼层

很奇怪

我之所以问是因为,没有加运行的很好。而且产品都在卖。
编译器为GCC的。是不是GCC可以这么做,而用其他的编译器不行呢?
平常人 发表于 2007-4-3 10:20 | 显示全部楼层

所有函数默认为extern;所以加不加extern无所谓,除非是static

对于函数的说明主要是区别是否为static
 楼主| bai4004 发表于 2007-4-3 12:31 | 显示全部楼层

仔细想想

仔细想想,11楼说得有道理,函数在编译链接的时候只是指针地址,不像变量。所以加不加extern没关系。我用不同的编译器试了,不影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部