首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

头文件中应用extern的作用

2013-04-21 
头文件中使用extern的作用?发现在某个.h头文件中,有直接写函数原型的,有在函数原型前加extern的。如:void i

头文件中使用extern的作用?
发现在某个.h头文件中,有直接写函数原型的,有在函数原型前加extern的。如:

void init_timer_key(struct timer_list *timer, const char *name, struct lock_class_key *key);
extern int mod_timer(struct timer_list *timer, unsigned long expires);
如果某个.c文件包含了该头文件,是否加extern好像也没有区别。
那么为什么init_timer_key不加extern,而mod_timer加extern?

[解决办法]
extern说明该函数来自其他文件
[解决办法]
比如a.c中有int a =1;如果b.c中要用到a=1;那么就可以extern int a;这样b.c就引用声明了a.c中的a,而不会去创建内存了
[解决办法]
C++支持函数重载,而C语言不支持,如果在C++中需要调用C文件中的函数,必须用extern加以区分。
[解决办法]
對於函數,沒有加extern的一般都在本文件實現,加了extern的在其它文件實現。
帶extern的函數聲明,一般是爲了避免編譯警告。
另外,如果這個C文件所包含的頭文件已經有函數的聲明了,就不需要再聲明。
[解决办法]
extern int mod_timer(struct timer_list *timer, unsigned long expires);//extern的作用是声明这个函数是来自外部的,当运行到该函数时就要到外部文件中去找该函数

void init_timer_key(struct timer_list *timer, const char *name, struct lock_class_key *key);//这个也是声明一个函数,该函数跟main函数是一起的,如果是在main中调用该函数时,写程序时你把这个函数写在main之前就不用这条声明语句,写在其之后就要。
应该明白了吧
[解决办法]
说简单点,加extern的函数实现在外部,不加的在内部。
[解决办法]

引用:
说简单点,加extern的函数实现在外部,不加的在内部。


一般包含该实现的头文件,可以不用使用extern了
[解决办法]
++
引用:
说简单点,加extern的函数实现在外部,不加的在内部。

[解决办法]
在该文件中直接使用在其他文件中定义过的
我是这样理解的
[解决办法]
函数定义时,在没有指定是static静态的情况下,默认是extern的,对于无需提供给外部文件的函数,我们应该定义为static,外部不可引用,而提供给外部使用的函数,在相应头文件中声明,声明中extern是可以省略的,由需要调用的c文件包含,一般在定义这些外部函数的c文件也会include这个头文件,否则编译时会出现警告。

热点排行