当前位置: 首页 > news >正文

C语言中,“extern”关键字的含义与用法

在这里插入图片描述
在C语言中,extern 关键字用于声明一个已经在其他地方定义的变量或函数。它的主要作用是告诉编译器,某个变量或函数是在当前文件之外定义的,编译器应该在链接阶段找到这个变量或函数的实际定义。以下是 extern 的一些常见用途和用法:

1. 声明全局变量

当你在一个文件中定义了一个全局变量,并希望在另一个文件中使用这个变量时,可以在第二个文件中使用 extern 关键字来声明这个变量。

文件1: file1.c
// 定义一个全局变量
int globalVar = 10;
文件2: file2.c
#include <stdio.h>// 使用 extern 声明 file1.c 中定义的全局变量
extern int globalVar;void printGlobalVar() {printf("globalVar = %d\n", globalVar);
}

2. 声明函数

如果你在一个文件中定义了一个函数,并希望在另一个文件中调用这个函数,可以在第二个文件中使用 extern 关键字来声明这个函数。不过,通常情况下,函数的声明已经包含在头文件中,所以直接包含头文件即可。

文件1: file1.c
// 定义一个函数
void myFunction() {// 函数实现
}
文件2: file2.c
#include <stdio.h>// 使用 extern 声明 file1.c 中定义的函数
extern void myFunction();int main() {myFunction();return 0;
}

3. 在头文件中声明

为了更好地组织代码,通常会在头文件中声明全局变量和函数,然后在多个源文件中包含这个头文件。

头文件: common.h
#ifndef COMMON_H
#define COMMON_H// 声明全局变量
extern int globalVar;// 声明函数
void myFunction();#endif // COMMON_H
文件1: file1.c
#include "common.h"// 定义全局变量
int globalVar = 10;// 定义函数
void myFunction() {// 函数实现
}
文件2: file2.c
#include <stdio.h>
#include "common.h"int main() {myFunction();printf("globalVar = %d\n", globalVar);return 0;
}

总结

  • extern 关键字用于声明已经在其他地方定义的变量或函数。
  • 对于全局变量,使用 extern 可以在多个文件之间共享同一个变量。
  • 对于函数,虽然通常不需要显式使用 extern,但在某些情况下(如静态链接库)可能需要使用 extern 来声明函数。

通过合理使用 extern,可以有效地管理和组织大型项目的代码。


http://www.mrgr.cn/news/70678.html

相关文章:

  • 【MQTT】代理服务比较RabbitMQ、Mosquitto 和 EMQX
  • Greenplum 可观测最佳实践
  • ES6笔记
  • 酷釉V2无人棋牌独立版源码+搭建教程文档
  • [python3] tornado 使用swagger编写接口文档
  • Go语言中的`os.WriteFile`:简单高效的文件写入方法
  • [线程池]
  • day62 53.寻宝
  • 【编程概念基础知识】
  • 【数据结构】图的应用的时间复杂度
  • ‌MySQL 5.7和8.0版本在多个方面存在显著区别,主要包括性能优化、新特性引入以及安全性提升
  • 【FF++】FaceForensics++: Learning to Detect Manipulated Facial Images
  • SpringCloud微服务聚合工程创建指南
  • 明日周刊-第27期
  • [CUDA] cuda程序编译注意事项
  • 解码潜意识:如何用Python构建梦境分析模型
  • C#入门 020 事件(类型成员)
  • (05/16) - 萨班斯-奥克斯利法案(SOX)--- 详解SOX法案
  • 【uiautomator】自动化测试camera【一】
  • 简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
  • Scrapy搭配Selenium爬取豆瓣电影250排行榜动态网页数据
  • Linux中线程的基本概念与线程控制
  • 深⼊理解指针(5)[回调函数、qsort相关知识(qsort可用于各种类型变量的排序)】
  • YOLOv11融合CVPR[2020]自校准卷积SCConv模块及相关改进思路|YOLO改进最简教程
  • 前端知识点---字符串的8种拼接方法(Javascript)
  • 边缘检测的100种方法