c语言extern声明两个参数不同的函数,C语言之extern声明辨析[2]

C语言之extern声明辨析[2]以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

442cb08d75b2524977c29b5f1b368a74.png   问题 extern 函数  常常见extern放在函数的前面成为函数声明的一部分 那么 C语言的关键字extern在函数的声明中起什么作用?  答案与分析   如果函数的声明中带有关键字extern 仅仅是暗示这个函数可能在别的源文件里定义 没有其它作用 即下述两个函数声明没有明显的区别

extern int f(); 和int f();

当然 这样的用处还是有的 就是在程序中取代include * h 来声明函数 在一些复杂的项目中 我比较习惯在所有的函数声明前添加extern修饰   问题 extern 函数  当函数提供方单方面修改函数原型时 如果使用方不知情继续沿用原来的extern申明 这样编译时编译器不会报错 但是在运行过程中 因为少了或者多了输入参数 往往会照成系统错误 这种情况应该如何解决?  答案与分析   目前业界针对这种情况的处理没有一个很完美的方案 通常的做法是提供方在自己的xxx_pub h中提供对外部接口的声明 然后调用方include该头文件 从而省去extern这一步 以避免这种错误   宝剑有双锋 对extern的应用 不同的场合应该选择不同的做法   问题 extern C  在C++环境下使用C函数的时候 常常会出现编译器无法找到obj模块中的C函数定义 从而导致链接失败的情况 应该如何解决这种情况呢?  答案与分析   C++语言在编译的时候为了解决函数的多态问题 会将函数名和参数联合起来生成一个中间的函数名称 而C语言则不会 因此会造成链接时找不到对应函数的情况 此时C函数就需要用extern C 进行链接指定 这告诉编译器 请保持我的名称 不要给我生成用于链接的中间函数名   下面是一个标准的写法

//在 h文件的头上#ifdef __cplusplus#if __cplusplusextern C { #endif #endif /* __cplusplus */  … … // h文件结束的地方 #ifdef __cplusplus #if __cplusplus}#endif#endif /* __cplusplus */ lishixinzhi/Article/program/net/201311/15555

分页:123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值