不可以在.h文件中"实现"变量; 但可以(而且一般需要)在.h文件中"声明"变量!
"实现"与"声明"的区别: "实现一个变量"即"生成一个变量",就好比某人说:"我生孩子了",意味着这个人生出一个孩子了.生一个是一个. "声明一个变量"即"描述一个变量",就好比某人说:"这孩子出生证号123456",意味着这个孩子已经存在,按出生证号就能找到这个孩子.
为什么 不可以在.h文件中"实现"变量; 但可以(而且一般需要)在.h文件中"声明"变量! 呢?
.h文件一般是被某些.c文件包含的(#include),或者被别的.h文件包含(但最终依然还是被某些.c文件包含),注意这里用了"某些"这个词,意思是有几个.c文件要包(包含,不是包那什么,嘿嘿)同一个.h文件, 如果在这个.h文件中"实现"某个变量varA,那么包含这个.h文件的所有.c文件都会生成同一个变量varA,于是,就会出现变量重名的问题. 需要被其他文件引用的变量一般需要在.h文件中用 extern 声明,就好比说:"这个变量已经存在,谁要用这个变量只需要包含本.h文件就可以了!",至于具体到哪儿去找到这个变量,编译系统有自己的办法,就不用操心了.
|