extern 关键字
强调 1
都是
c
或者都是c++
时使用extern关键字,且都在一个源文件中。
//声明外部变量或函数 #include <stdio.h> int main(int argc, char const *argv[]) { extern 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
强调2
在外部文件中
//extern_main.c中 #include <stdio.h> int main(int argc, char const *argv[]) { extern var_main; //提前声明 extern var_other; //声明在外部文件 extern void func_main(); extern void func_other(); func_main(); 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); }
//extern_other.c中 #include <stdio.h> int var_other = 99; void func_other() { printf("func_other var_other = %d\n", var_other); }
编译命令:gcc -o extern extern_mian.c extern_other.c 代码执行结果: func_main var_main = 100 main var_main = 100 main var_other = 99
强调3
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.cpp文件 #include <stdio.h> extern "C" int var_c; extern "C" void func_c(); int main() { func_c(); var_c = 100; //重新赋值 printf("extern_cpp var_c= %d\n", var_c); return 0; }
编译命令:gcc extern_c.c -c
与gcc extern_cpp.cpp -c
分别生成extern_c.o
与extern_cpp.o
文件,再通过gcc extern_c.o extern_cpp.o -o extern_cplus_c
命令生成可执行文件 extern_cplus_c
代码执行结果: func_c var_c= 99 extern_cpp var_c= 100
充电站
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习