一、原理
引用还没有声明的变量或函数,这个变量或函数在其他地方声明
二、使用场景
1.都是C或者C++:声明外部变量或函数
a.文件内
//extern_main.c #include <stdio.h> int main(){ extern int var_main; extern void func_main(); func_main(); printf("main var_main = %d\n",var_main); return 0; } int var_main = 100; void func_main(){ printf("func_main var_main = %d\n",var_main); }
//输出 func_main var_main = 100 main var_main = 100
b.文件外
//extern_other.c #include <stdio.h> int var_other = 99; void func_other(){ printf("func_other var_other = %d\n",var_other); }
//extern_main.c #include <stdio.h> int main(){ extern int var_main; extern void func_main(); extern int var_other; extern void func_other(); func_main(); func_other(); printf("main var_main = %d\n",var_main); printf("main var_other = %d\n",var_other); return 0; } int var_main = 100; void func_main(){ printf("func_main var_main = %d\n",var_main); }
//输出 func_main var_main = 100 func_other var_other = 99 main var_main = 100 main var_other = 99
2.C++调用C编译的变量或者函数
//extern_c.c #include <stdio.h> int var_c = 99; void func_c(){ printf("func_c var_c = %d\n",var_c); }
//extern_cpp.c #include <stdio.h> //放外面,extern只能用来声明 extern "C" int var_c = 99; extern "C" void func_c(); int main(){ func_c(); var_c = 100; printf("extern_cpp var_c = %d\n",var_c); return 0; }
//输出 func_c var_c = 99 extern_cpp var_c = 100
推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/VsFMs