extern关键字的作用

简介: extern关键字的作用

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 -cgcc extern_cpp.cpp -c分别生成extern_c.oextern_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等技术内容,立即学习

相关文章
|
1月前
|
存储 编译器 C语言
【C/C++ 关键字 存储类说明符 】一文带你了解C/C++ 中extern 外部声明 关键字的使用
【C/C++ 关键字 存储类说明符 】一文带你了解C/C++ 中extern 外部声明 关键字的使用
52 1
|
1月前
|
算法 C语言 C++
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
【C/C++ 关键字 类型限定符 】 C/C++ 中 const的用法:限制变量的作用域和可见性
20 0
|
5月前
|
存储 Cloud Native Linux
C++ extern关键字作用
C++ extern关键字作用
|
11月前
|
存储 C语言
初识C语言——关键字static的作用
初识C语言——关键字static的作用
64 0
|
存储 C语言
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
81 0
【学习笔记之我要C】初识常见关键字、#define定义常量和宏
|
编译器
#ifdef _cplusplus extern “C“ 含义及应用
#ifdef _cplusplus extern “C“ 含义及应用
102 0