extern关键字的作用

用一句很贴切的话来形容我们的extern关键字就是“外来的和尚会念经”

extern 是指当前变量或函数不是本源文件内声明的,它是外部变量和外部函数,正所谓“外来的和尚会念经”,能够很好的体现extern的价值。当我们在本文件中试图引用一个外部声明的全局变量或者函数的时候,可以在其前面加上extern,表示它是外来的“和尚”

extern 可以修饰变量和函数,表示该变量或函数在其他的地方被定义(本源文件或其他源文件),在这里声明使用它,这样多个源文件共享变量和函数;多个C源文件的编译是独立的,所以编译器无法判断多个源文件共享的变量的类型是否一致(只能判断变量名和函数名是否一致);等到链接的时候(这个阶段已经不再进程语法检查了),多个源文件编译后的.O文件链接成一个目标文件,如果有一个以上源文件对同一变量进行了初始化则报错。
1、extern变量名

在任何函数体外声明或定义变量时,不加extern可能是定义也可能是声明,编译器选择初始化的那个(最多一个地方对它进行了初始化),如果没有初始化则任选其中一个作为定义,其他为声明,但是加extern肯定是声明;如果不想让其它源文件链接到,则需要使用static关键字
2. extern 函数

函数默认是外部的(在函数体内或函数体外声明一个外部函数,extern关键字均可以省略)如果不想让其他源文件链接到,在函数前加static关键字。在写程序的时候一定要注意外部函数的参数类型、参数个数和返回值类型,最好保持一致

宏观的理解:通过上面的分心来看,C程序里,通过函数将功能区分开来。每个函数完成一个功能,而又将一片相关联的功能集合在一个源程序里,这些功能和相关联的功能之间通常要有联系,而这种练习就是通过static和extern进行联系的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值