test.c文件构架
1、包含本文件对应头文件test.h
2、定义仅供本文件内部使用全局变量:用static修饰
3、定义可供外部文件使用的全局变量
4、引用外部文件定义的全局变量的申明:加extern
5、为本文件内定义的函数分配存储空间
test.h文件架构
1、条件编译,以防头文件被重复包含
#ifndef _TEST_H_
#define _TEST_H_
-----
#endif
2、包含test.c用到的头文件
3、test.c用到的enum和struct类型的typedef申明
4、test.c用到的外部文件定义的函数原型声明:用extern修饰
实例说明上述文件结构下各个.c文件直接怎么传递数据:
以main.c fun1.c fun2.c为例,fun2.c想获取fun1.c里面global_fun1本地变量的值,由于global_fun1为fun1.c的静态变量,fun2.c无法直接访问。要想获取fun1.c有两种方法:
方法1:在fun1.c中定义一个返回值为指针的函数。通过fun2.c调用fun1.c这个函数,得到global_fun1变量的地址,通过该地址访问。
方法2:在fun1.c中定义一个传入指针变量的函数。通过fun2.c调用fun1.c这个函数,将fun2.c的本地变量地址传递至fun1.c,在fun1.c里面将传过来的地址进行赋值。
两者main函数无改动,主要是fun1.c有改动。通过此例可以说明,在C语言中变量名有自己的作用域限制,但地址的作用域是全局的。