这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » uTenux工程中的extern

共1条 1/1 1 跳转至

uTenux工程中的extern

高工
2013-07-14 20:30:54     打赏

uTenux工程中使用了很多的extern声明。

以前只知道变量前面放个extern是干啥的,没见过这种用法。

好多函数之前都会放个extern,刚开始不知道为啥。手动删除一个两个extern也没事。但不知道为什么。

今天问了下百度,豁然开朗啊:

extern函数1

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

当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,比较习惯在所有的函数声明前添加extern修饰。


extern函数2 当函数提供方单方面修改函数原型时,如果使用方不知情继续沿用原来的extern申明,这样编译时编译器不会报错。但是在运行过程中,因为少了或者多了输入参数,往往会造成系统错误,这种情况应该如何解决? 答案与分析: 目前业界针对这种情况的处理没有一个很完美的方案,通常的做法是提供方在自己的xxx_pub.h中提供对外部接口的声明,然后调用包涵该文件的头文件,从而省去extern这一步。以避免这种错误。 宝剑有双锋,对extern的应用,不同的场合应该选择不同的做法。



至于工程中的extern,我想就是王老板在写程序的时候,偶尔会更给函数的接口,该了之后通过这个extern来提醒调用这个函数的东西。现在工程完成,我们不去该这些接口,这个extern就没啥用了。删掉也没关系。

总结下这个东西:写个小东西时候没啥用,工程大了工程周期长了就有用了。






关键词: uTenux     工程     中的     extern     函数    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]