+ -
当前位置:首页 → 问答吧 → 关于C文件中extern的问题

关于C文件中extern的问题

时间:2011-12-14

来源:互联网

在一个中小型项目中 ,我看到关于extern的用法,发现有些问题 请问在一个文件中声明全局变量extern int i;
然后再另一个文件中的全局变量用extern int i;那么是不是一个啊?

作者: qiedechenqian   发布时间: 2011-12-14

如果都是全局的,那就是一样的
只是要有一个地方定义下

作者: keiy   发布时间: 2011-12-14

表示引用的是同一个i 
这个i在除了这两个文件的另外一个文件定义了

作者: pqpqr   发布时间: 2011-12-14

只是方便阅读,就算不声明也照样可以链接通过

作者: zhujian888   发布时间: 2011-12-14

一样的,楼主可能是在多个地方修改了变量值了吧

作者: quwei197874   发布时间: 2011-12-14

引用 3 楼 zhujian888 的回复:

只是方便阅读,就算不声明也照样可以链接通过


???

作者: fcmsuck   发布时间: 2011-12-14

一样的。。

作者: gaochizhen33   发布时间: 2011-12-14

extern是引用已经声明过的变量,这个变量是在其他文件中声明的,
所以你用extern的时候,其实是同一个变量,你可以写一个demo,打印两次extern的变量地址,就知道他们是不是一样的了

作者: yang7531388   发布时间: 2011-12-14

嗯,应该是同一个i,而且这个i应该是在别的文件中定义为全局变量了。

extern本质上是一种声明行为,它不会为其后面的变量分配内存,而是告诉编译器,那个变量在别的地方定义过(分配内存)了。

作者: pathuang68   发布时间: 2011-12-14

看来是高手懒得说,菜鸟净瞎说

作者: fcmsuck   发布时间: 2011-12-14

extern是不定义变量的,extern是告诉编译器,我可能要用这个变量,而且这个变量是在别的地方定义过的。

作者: finewind   发布时间: 2011-12-14

这取决于不同的编译器的实现吧。

作者: cup_t   发布时间: 2011-12-14

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。

作者: cfjtaishan   发布时间: 2011-12-14

支持12L的说话

作者: jackyid   发布时间: 2011-12-14