extern 用法

原文链接:http://blog.csdn.net/itisyang/article/details/50435504


在一个c文件A中定义了全局变量,在另一个c文件B中定义同名全局变量,对A和B分别编译,都可以正常通过编译,但是进行链接的时候,却出现了错误。

在编译阶段,各个文件中定义的全局变量相互是不透明的,编译A时觉察不到B中也定义了该全局变量,同理B也一样。

在链接阶段,要将各个文件的内容“合为一体”,因此,如果某些文件中定义的全局变量名相同的话,在这个时候就会出现重复定义的错误。

extern的原理很简单,就是告诉编译器:“你现在编译的文件中,有一个标识符虽然没有在本文件中定义,但是它是在别的文件中定义的全局变量,你要放行!”


以下程序可以成功编译执行:

//A.cpp
extern int i;
void main()
{
    i=100;//试图使用B中定义的全局变量
}


//B.cpp
int i;


注意:不同文件使用同一全局变量时,只能在初始定义处初始化该变量,否则会出现重复定义错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值