多个C文件共用一些变量

  在C语言中,经常会出现一个项目由多个C文件共同组成,而多个C文件中有时需要引用相同的变量。在嵌入式单片机中,也会出现相同的情况,除了需要条件编译外,还需要全局变量声明:"extern"外部声明。一处进行了定义 unsigned char a ,其他地方再次引用只需要直接声明就好,extern  a;

  放到c文件中,其他地方调用时extern NvU32 disp_init_flag ;一下还是可以的。放到h文件中不行,每个包含这个h文件的c文件都会赋值,就冲突了.

  A.带“extern ”关键字的语句属于声明 (declarations ),不是定义 (definitions ),他不会给变量分配内存。实际上,它是说明程序中的某处包含这个变量的定义 。一个变量可以在程序中被声明 (declarations )多次,但是只能被定义 (definitions )一次。
  B.声明 (declarations )时你可以给变量初始化。但是一旦你这样做,那么这句话也就变成了定义 (definitions ),因为只有在定义 (definitions )的时候才会为变量分配内存。初始化的时候必然要为初始值分配存储空间。如果你在声明 (declarations )的时候同时初始化了变量,即便“extern ”关键字存在,这个语句也会认为是定义 (definitions )。
  其他方面需要具体研究了。http://hi.baidu.com/new/wangh0802
原文地址:https://www.cnblogs.com/wangh0802PositiveANDupward/p/2599383.html