变量、函数声明与定义


在看了C语言参考手册这本书之后,发现声明和定义是很深奥的。

extern int  i ;

extern void write(void)


首先说明下extern的作用:

基本上都是两个作用:

①:放在变量或函数之前,表示在这里只是一个声明,该变量或函数已经在别处定义了;

比如test.h   在该头文件中声明 

extern int i;

void write(void);


然后在test.cpp中包含test.h头文件

int i;      //声明全局变量

void write(void)

{

...........................................

}

这样任何包含test.h头文件的都可以使用全局变量 i 了,


②:extern "C"

与"C" 一起用,主要在C++代码中调用C编译的动态库,或者再C++代码中要以C风格编译C++方法:

如果C调用C++编译的动态库(没有添加extern "C"),在链接的时候会提示函数找不到,

为什么是这样呢?

原因:C++支持函数重载,在编译的时候会根据函数名和参数生成一个中间名字;但是在C中不会生成中间名字的;

例如C++代码中要调用ffmpeg的代码(ffmpeg是由C实现的),如果在调用时没有添加extern "C",编译的时候是正常的,

但是到链接时就会提示找不到函数名称,这是只要加上extern "C"就解决了该问题。


#ifdef __cplusplus

extern "C"

{

#endif

>>>>>>>>>>>>>>

>>>>>>>>>>>>>>

#ifdef __cplusplus

}

#endif



接下来介绍将声明和定义分开有什么好处:在项目中一般都是将声明放在.h文件;定义放在.cpp或.c文件,这样的好处不仅仅逻辑清晰,

同时对用户只暴露接口,实现部分很好的隐藏起来了。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值