c或cpp文件中变量
常见的情况,在一个文件a.c中定义了一个变量int i,而在另外一个文件b.c中想使用它,这个时候就会在没有定义变量i的b.c文件中做一个外部变量的声明
//声明在a.c文件中
int i=123;
// 声明在b.c文件中
extern int i;
这样做的好处是,在分别编译了a.c和b.c之后,其生成的目标文件a.o和b.o中只有i这个符号(可简单理解为变量)的一份定义。
具体地,a.o中的i是实在存在于a.o目标文件的数据区中的数据,而在b.o中,只是记录了i符号会引用其他目标文件中数据区中的名为i的数据。
而如果b.c中我们声明int i的时候不加上extern的话,那么i就会实实在在地既存在于a.o的数据区中,也存在于b.o的数据区中。
那么链接器在链接a.o和b.o的时候,就会报告错误,因为无法决定相同的符号是否需要合并。
模板函数
未完