extern 标识符的作用
1.在C语言当中,extern符号的作用主要是声明变量和函数
比如
在A.c文件中定义一个全局变量
int ext_val;
需要在B.c中使用这变量
int main()
{
int val = ext_val;
}
如果此时编译它们的话,由于编译过程是一个一个文件进行编译,编译B.c文件时,并没有ext_val变量,因此编译会报错。
此时就由extern派上用场了
在B.c中增加一句extern int ext_val;告诉编译器这个变量是在其他文件定义,编译可以正常通过。这其实是一句声明语句,声明的ext_val不分配内存,不占用内存空间。
extern int ext_val;
int main()
{
int val = ext_val;
}
2.在C++中,会使用extern "C"来告诉g++编译器按照c语言的规则编译这段代码。
主要原因在于C++中为实现静态多态,编译生成的函数符合是和参数关联的,例如
int extCal(int a, int b)
在C++中编译结果是_extCal_int_int,即函数和参数类型共同组成函数符号
在C中编译结果是_extCal,函数不和参数类型关联
两者编译规则不同
extern "C"
{
.......
}
网友评论