1)在A中定义的函数,如何在B中调用?
如果有头文件,在头文件中声明,在B文件中#include头文件就可以了。
如果是在.c文件中声明的,在B中加extent声明:extern void timer_hw_init(void);
2)在A中定义的结构体及变量,如何在B中调用?
1> 对于全局结构体定义,首先在Globals.h头文件中构造结构体,用typedef方式,如:
typedef struct tagLineType
{
int ID;
CString Type;
double r0;
double x0;
}LINETYPE; // 名称可随便
而后,在Globals.cpp文件中:
LINETYPE *lineType = NULL; // 注意,在这里初始化
而后,回到Globals.h头文件:
extern LINETYPE *lineType; // 注意,这里不能再初始化
2> 对于普通全局变量(如int型)定义,首先在Globals.cpp中:
int iTime = -1; // 注意,在这里初始化
而后,在Globals.h头文件中:
extern int iTime; // 注意,这里不能再初始化
3> 对于全局常量定义,首先再Globals.cpp中:
const int UB = 10;
而后在Globals.h头文件中:
extern const int UB;
以上是第一种方法,是我自己总结试验成功的。用该方法定义完毕后,无论哪个.cpp文件要用到全局变量,只需在该.cpp文件中#include "Globals.h"即可,而无需再在.cpp文件中extern,所有全局变量、全局常量、全局结构体都是可见的。该方法的总体思路是,象theApp那样,在.cpp中定义,在.h头文件中extern声明。另外要注意,变量的初始化一定在Globals.cpp文件中,而不能在Globals.h头文件中。
结构体:每个用到这个全局结构体的文件都要包含typedef的头文件,声明该结构体要在.c文件中,而且不能包括在函数内。