C语言extern的理解(新手)?

C语言extern的理解(新手)?

在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"