c语言 在任一个文件中定义外部变量Num,解释这句话

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 在任一个文件中定义外部变量Num,解释这句话相关的知识,希望对你有一定的参考价值。

如果一个程序包含两个文件,在两个文件中都要用到同一个外部变量Num,不能分别在两个文件中各自定义一个外部变量Num,这样会引发“重复定义”错误;

应在任一个文件中定义外部变量Num,而在另一文件中用extern对Num作“外部变量声明”;

我不明白第二段的“在任一个文件中定义外部变量Num”中的“文件”是指什么?第一时间想到是“函数”,但显然不可能,因为外部变量若不用存储类别extern,怎么能在函数里定义呢?那“文件”究竟是指什么?

这里面说的文件就是指你工程中的其他的文件,包括所有的文件:头文件、源文件,甚至是资源文件。(头文件与源文件的本质是没有区别的。)
如果想让多个源文件公用一个全局变量,那么必须要在单独的一个头文件中(有人说在单独的cpp中也可以,我没试过,原则上说是可以的),比如新建一个头文件:globalvar.h
然后你在此文件中定义全局变量:比如说:extern int count=100;(注意:这里是定义,而不是声明,定义与声明是有严格的界限的,定义是已经分配了内存空间,这个数据已经真实存在了;声明只是告诉编译器这个符号代表的是一个什么类型的变量,将来占用多少的内存空间,但是并没有真实的分配,网上的资料很多,你可以搜索一下)。
然后在你需要此全局变量的的文件的声明一下这个变量时来自外部的就OK了,(记住是声明:extern int count;).然后别忘了把globalvar.h头文件包含进去(#include "globalvar.h")这样就可以使用这个全局变量的。

另外,把全局变量和全局函数写到同一个头文件中也是一种良好的编程习惯。不过最好少使用全局的数据和函数,那样容易破坏程序的封装性,因为每一个操作都有可能改变全局的数据。
参考技术A (1)此“文件”就是指程序中的文件啊。
(2)外部文件不用extern,也可以在文件的开头进行声明,在函数中,可以声明再主函数中;
(3)“文件”应该就是指子函数(或调用函数);本回答被提问者采纳
参考技术B 学习

以上是关于c语言 在任一个文件中定义外部变量Num,解释这句话的主要内容,如果未能解决你的问题,请参考以下文章

C语言和汇编怎样引用对方定义的变量?

这句话啥意思,javascript中 var num = new Number();

闭包的总结

这句c语言宏定义是啥意思, 请高手解释一下, 谢谢了!

C语言:预处理是啥意思?就是看不懂这句话的解释!越具体越好,也可以通俗一点!

c语言定义一个变量num,按键key按一次,num加1;num的取值为0~5的6个数字;用if语句