itloverhpu

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

1.稍微复杂一点的程序都要按照多模块去书写,不能想象都放在一个.C文件盒一个.h文件

2.比如main.c---main.h/LCD1602.c--LCD1602.h/UART.c---UART.h

   1]:如果在LCD1602.c里面定义了一个全局变量:int k ,想在其他都文件中使用,那么LCD1602.h中应该怎么写呢?

      extern int k;//声明一个全局变量

     总结:extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。

 注意:

extern int a;//声明一个全局变量a

 

int a; //定义一个全局变量a

 

extern int a =0 ;//定义一个全局变量a 并给初值。一旦给予赋值,一定是定义,定义才会分配存储空间。

 

int a =0;//定义一个全局变量a,并给初值,
全局变量的可见域限制在文件内部!
2]关于函数 .h文件书写:
   。。。。

不要在头文件里定义任何变量,只能做声明;
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别
的源文件里定义,没有其它作用;
一般定义static全局变量时,都把它放在原文件中而不是头文件;
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中
寻找其定义。另外,extern也可用来进行链接指定。
定义只能出现在一处。也就是说,不管是int a;还是int a=0;都只能出现一次,而那个extern int a可以出现很多次。
各个文件中定义的全局变量名不可相同;


函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern的。但是引用的时候一样是需要声明的。
而全局变量在外部使用声明时,extern关键词是必须的,如果变量无extern修饰且没有显式的初始化,
同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载如内存并初
始化为0。而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。

posted on 2013-07-21 00:28  itloverhpu  阅读(461)  评论(0)    收藏  举报