
在a.h中定义了结构体类型如下,
并同时声明了一个全局变量:
然后在b.c中包含a.h头文件,并引用如下:
显示b.c中undefined reference to 'g_igfInstance'
g_igfInstance在a.h里只是被声明了,其实并没有定义,也没有分配内存(我误以为定义了),所以最好应该在a.c中定义(该全局变量视情况决定是否赋初值,否则全局变量默认指针为NULL,值为0,再在a.h中声明 extern。
小结:
定义和声明的区别辨析,更多例子帮助理解:
a.c中定义,IGF_ENC_INSTANCE g_igfInstance; a.h中声明,extern IGF_ENC_INSTANCE g_igfInstance; b.c中正常包含a.h,include "a.h"
