详解C语言中的关键词:extern以及它需要注意的事项
创作时间:
作者:
@小白创作中心
详解C语言中的关键词:extern以及它需要注意的事项
引用
CSDN
1.
https://m.blog.csdn.net/wenhao_ir/article/details/144682259
在C语言开发中,
extern关键字是一个重要的概念,它允许在不同源文件之间共享变量和函数。本文将详细介绍extern的作用、使用场景以及常见的误区,帮助开发者更好地理解和使用这一特性。
extern的作用
extern关键字主要用于声明变量或函数的外部链接性,即在当前文件中使用另一个文件中定义的变量或函数。具体作用如下:
- 跨文件访问:
extern告诉编译器,某个变量或函数是在另一个文件中定义的,当前文件只是引用它。需要注意的是,函数的声明其实默认就具有extern的默认属性,所以extern主要是对全局变量进行声明。 - 延迟定义:在文件中引用了某些全局变量或函数,但不在当前文件中定义它们,而是等待链接阶段找到其定义。
主要使用场景
用于变量的外部声明
extern主要用于跨文件访问全局变量。
例如:
文件1:global.c
#include <stdio.h>
int globalVar = 42; // 定义全局变量
文件2:main.c
#include <stdio.h>
// 声明外部变量
extern int globalVar;
int main() {
printf("Value of globalVar: %d\n", globalVar); // 输出 42
return 0;
}
解释:
- 在
main.c文件中,extern int globalVar;告诉编译器,globalVar是在另一个文件中定义的。 - 链接阶段,编译器会将
globalVar的引用解析到global.c中的定义。
用于函数的外部声明
虽然函数声明默认具有外部链接性,但你仍可以显式使用extern,尽管很少需要这样做。
例如:
extern void someFunction(void); // 明确声明某函数为外部定义
注意:函数的外部声明通常通过头文件实现,因此实际项目中很少需要手动写extern。
控制全局变量的作用域
如果某个变量在一个文件中定义,但希望它仅在该文件中可见(即文件作用域),使用static定义;如果希望它能被其他文件访问,则用extern声明。
示例:
文件1:file1.c
#include <stdio.h>
int sharedVar = 100; // 定义全局变量,供其他文件使用
static int localVar = 200; // 仅限当前文件使用
文件2:file2.c
#include <stdio.h>
extern int sharedVar; // 引用 file1.c 中的全局变量
int main() {
printf("sharedVar: %d\n", sharedVar); // 输出 100
// printf("localVar: %d\n", localVar); // 错误:无法访问
return 0;
}
解释:
sharedVar可以在其他文件中访问,因为它是全局变量,并且在file2.c中用extern声明。localVar是静态变量,仅在file1.c中可见,其他文件无法引用。
常见误区
- 误以为
extern是定义变量:
extern只是声明,告诉编译器这个变量在别处定义。- 如果在没有定义的情况下使用
extern,会导致链接错误。
- 对局部变量使用
extern:
extern只能用于全局变量和函数。局部变量本身没有链接性,不能被extern声明。
总结
- 作用:
extern用于声明外部变量或函数,支持跨文件访问。 - 使用场景:
- 声明全局变量,避免重复定义。
- 明确标识函数或变量的外部链接性。
- 典型模式:用
extern声明在头文件中,定义在对应的源文件中。
在现代开发中,extern的使用更多体现在变量跨文件访问和接口声明通过头文件实现。
热门推荐
夏日亲子游玩新模式:六种创新活动让亲子时光更精彩
快站上体重秤吧!科学告诉你每天称重一次最容易减肥
燕麦和红薯都是很好的粗粮,丰富的膳食纤维能促进肠道蠕动
王者荣耀瑶技能详解:变身机制与护盾辅助攻略
30年来最好的10台四驱性能车,再过30年,不知还剩几台有继任
实验室气体管道工程的安全要求详解
肥胖或有“记忆”!Nature发文解密体重反弹
《永乐大典》:中华民族的辉煌印记
北海道戚风蛋糕!冰淇淋口感,一口就爆浆!连吃3个都不腻!
夜班族必看!轮班工作如何摆脱失眠与日夜颠倒,重新掌控自己的睡眠节奏!
湖北工程学院:一所位于孝感的省属公办本科院校
二手笔记本电脑购买指南:选择、评价与推荐
汽车制动系统检查与维护指南:关键步骤与注意事项
赵光义是否杀兄夺位?“烛影斧声”的真相是什么?
一次性口罩是什么材料做的?一次性口罩怎么制作?
法律案例分析法:方法与应用
白姓的来源、迁徙与历史名人
医生:早发现早干预,家长要带孩子定期做眼科检查
美元买入价和卖出价的价差:评估汇率波动的关键因素
养淡水鱼哪种鱼最挣钱?
NCCN胰腺癌指南2025.V1版来袭,一文掌握更新全要点!
汽车传感器的检测方法与经验技巧,很实用!
为什么小丑鱼不会被海葵蜇伤?海洋生物学家解开百年谜团
右肋下疼痛的原因可能有哪些
掌握直线法,轻松解锁数学难题技巧
怎么理解《水浒传》里的“忠义”
深入解析非经常性项目对企业财务的影响
观察|长三角高铁线网密布,为何还要画上沪苏湖这“一横”
睡前别光刷手机!做好这4件事 抓牢养生黄金时间
红薯藤的功效与作用、禁忌和食用方法