extern的使用和危害

extern 的用途:
extern 在很多时候被我们大量的使用,一般用于引用不在本文件定义或声明的函数还有变量。
对于变量往往更多的是全局变量。
比如在我们在a.c文件定义了一个函数原型,并实现了其功能。当我们再次要使用一个相似功能的函数接口
的时候,我们没必要自己再去实现一遍这样的函数,这样既浪费我们现在宝贵的时间,而且也没有充分利用
我们或者其他人之前所做的努力。

如下所示:
a1.c
    UINT funca(UINT uiValue)
    {
        ...
    }

b2.c
    UINT g_uiXxxFlagB2 = 0;/*...*/

现在我们要在c3.c文件中使用funca和全局变量g_uiXxxFlagB2,
比较简洁的方式就是在c3.c文件中使用extern 声明引用该函数和变量
c3.c
    extern UINT funca(UINT uiValue);
    extern UINT g_uiXxxFlagB2;

    UINT funcC3()
    {
        ...
        (VOID)funca(g_uiXxxFlagB2);
        ...
    }

    这样的方式给我们带来了一些很大的便利,从而节省了我们很多的时间和精力;
    但是这样做也会存在一些危险,比如我们在c3.c文件引用的在a1.c文件的funca函数原型
    由UINT funca(UINT uiValue)变为UINT funca(UINT uiValue1, UINT uiValue2)
    我们在编译的时候不会报错,但是在我们执行程序的时候会在使用该函数的时候存在危险,
    尤其是该函数若有一个参数为指针,极有可能会存在对指针的误操作,而引起异常;

那我们该如何做呢,比较好的方式就是将这些函数和变量放置在一个公共的大家都可以访问到的d4.h文件中,
在使用这些函数或者变量的时候,生命一下引用d4.h头文件即可。比如:
d4.h
    UINT funca(UINT uiValue);
    UINT g_uiXxxFlagB2;

c3.c
    #include "d4.h"

    ...

    UINT funcC3()
    {
        ...
        (VOID)funca(g_uiXxxFlagB2);
        ...
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值