当前位置: 技术问答>linux和unix
一个弱弱的问题:关于extern的使用
来源: 互联网 发布时间:2016-07-15
本文导语: extern为外部应用的定义,适用于定义变量和函数,对变量是可以理解的,如果不用extern会出现重复定义错误。但对于extern void fun()这样的方法真是起到了外部应用的作用了么? 我在A.c中写一个void fun(),...
extern为外部应用的定义,适用于定义变量和函数,对变量是可以理解的,如果不用extern会出现重复定义错误。但对于extern void fun()这样的方法真是起到了外部应用的作用了么?
我在A.c中写一个void fun(),在A.h中写入extern void fun() 或者 void fun() 。在B.c中引用A.h后,都能正常调用,编译也没有问题。
所以是不是说明extern +函数 其实是没有任何意义的(相当于 void fun()可以被重复定义,只要惟一一个.c文件中写它的具体实现就可以了)
我在A.c中写一个void fun(),在A.h中写入extern void fun() 或者 void fun() 。在B.c中引用A.h后,都能正常调用,编译也没有问题。
所以是不是说明extern +函数 其实是没有任何意义的(相当于 void fun()可以被重复定义,只要惟一一个.c文件中写它的具体实现就可以了)
|
函数跟变量名不一样吧,
只一个函数名的话没有实体,而只一个变量定义的话是有一个实体的.
只一个函数名的话没有实体,而只一个变量定义的话是有一个实体的.
|
在B.c中引用A.h后,都能正常调用,编译也没有问题。
这个其实不是extern的作用之处,
extern的作用之处在B.c在没有引用A.h的情况下,在B.c里直接extern void fun();少了引入头文件
这个其实不是extern的作用之处,
extern的作用之处在B.c在没有引用A.h的情况下,在B.c里直接extern void fun();少了引入头文件
|
头文件里一般是声明,而不带extern;需要用到别的c文件里实现的函数而没有通过包含头文件这样的方式的,可以extern声明。
|
在头文件中加上extern是为了别人读代码时清楚的认识该函数是外部调用的还是该文件内调用------这个一个好程序员的作风。
你看一个大点的工程的时候,就会发现作用很大,尤其去研究学习的时睺
所以6楼的兄弟。。。。。。。。。。。。。
你看一个大点的工程的时候,就会发现作用很大,尤其去研究学习的时睺
所以6楼的兄弟。。。。。。。。。。。。。