【C】extern 关键字的使用
extern
关键字的作用就是告诉编译器,去别的地方找这个函数或者变量的定义。
1、引用另一个文件中的变量
main.c
#include<stdio.h>
int main()
{
extern int num;
printf("%d",num);
return 0;
}
b.c
#include<stdio.h>
int num = 5;
void func()
{
printf("fun in a.c");
}
2、引用另一个文件中的函数
这里main函数中引用了b.c中的函数func。因为所有的函数都是全局的,所以对函数的extern用法和对全局变量的修饰基本相同,需要注意的就是,需要指明返回值的类型和参数。
main.c
#include<stdio.h>
int main()
{
extern void func();
func();
return 0;
}
b.c
#include<stdio.h>
const int num=5;
void func()
{
printf("fun in a.c");
}
3、与头文件的关系
头文件就是放各种接口定义的地方,不要在头文件中定义任何东西,比如全局变量:
/*xx头文件*/
#ifndef _XX_头文件.H
#define _XX_头文件.H
int A;
#endif
这个头文件如果被多个文件引用,在编译的时候是不会报错的,但是在链接的时候编译器会报错:重复定义全局变量。这个时候就需要加上extern关键字,表示这是一个声明,而不是定义。
总结
extern
关键字的作用就是声明,因为函数是有声明语法的,省略函数体。所以一般函数声明是省略了extern
关键字。
int func(void);
等效于
extern int func(void);
但是变量是没有单独的声明语法,所以要表示变量声明必须加上extern
关键字。
int a; // 这是定义
extern int a; // 这是声明
参考
1、https://blog.csdn.net/xingjiarong/article/details/47656339
2、http://lpy999.blog.163.com/blog/static/117372061201182051413310/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南