打印

头文件

[复制链接]
1358|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声明才对呀。
大家的意见呢

使用特权

评论回复
5
uc301| | 2007-4-2 20:21 | 只看该作者

使用特权

评论回复
6
HWM| | 2007-4-2 20:32 | 只看该作者

不用加

使用特权

评论回复
7
ayb_ice| | 2007-4-3 08:19 | 只看该作者

随便说说

  LZ看来是菜鸟,看看书...

使用特权

评论回复
8
gezhi| | 2007-4-3 08:20 | 只看该作者

晕倒!

有这么口径不一致的么,当然要加了!
还有一点我要提醒下楼主,自己试验一下不就行了吗,还要来问。

使用特权

评论回复
9
ayb_ice| | 2007-4-3 08:27 | 只看该作者

再啰嗦一句

  变量在某个C中定义可以直接使用,在其它C中使用就要加声明extern...
  注意: C的头文件是C本身的一部分,只是为了书写方便而分开写...
  这样说应该明白了吧...

使用特权

评论回复
10
bai4004|  楼主 | 2007-4-3 09:18 | 只看该作者

很奇怪

我之所以问是因为,没有加运行的很好。而且产品都在卖。
编译器为GCC的。是不是GCC可以这么做,而用其他的编译器不行呢?

使用特权

评论回复
11
平常人| | 2007-4-3 10:20 | 只看该作者

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

对于函数的说明主要是区别是否为static

使用特权

评论回复
12
bai4004|  楼主 | 2007-4-3 12:31 | 只看该作者

仔细想想

仔细想想,11楼说得有道理,函数在编译链接的时候只是指针地址,不像变量。所以加不加extern没关系。我用不同的编译器试了,不影响。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

1

粉丝