C语言extern关键字(去使用外部全局变量、函数)
参考:C语言正确使用extern关键字
作者:xingjiarong
发布时间:2015-08-14 08:37:33
网址:https://blog.csdn.net/xingjiarong/article/details/47656339
目录
- 1、引用同一个文件中的变量
- 2、引用另一个文件中的变量
- 3、引用另一个文件中的函数
利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。
1、引用同一个文件中的变量
#include<stdio.h>int func();int main()
{func(); //1printf("%d",num); //2return 0;
}int num = 10;int func()
{printf("%d\n",num);
}
如果按照这个顺序,变量 num在main函数的后边进行声明和初始化的话,那么在main函数中是不能直接引用num这个变量的,因为当编译器编译到这一句话的时候,找不到num这个变量的声明,但是在func函数中是可以正常使用,因为func对num的调用是发生在num的声明和初始化之后。
如果我不想改变num的声明的位置,但是想在main函数中直接使用num这个变量,怎么办呢?可以使用extern这个关键字。像下面这一段代码,利用extern关键字先声明一下num变量,告诉编译器num这个变量是存在的,但是不是在这之前声明的,你到别的地方找找吧,果然,这样就可以顺利通过编译啦。但是你要是想欺骗编译器也是不行的,比如你声明了extern int num;但是在后面却没有真正的给出num变量的声明,那么编译器去别的地方找了,但是没找到还是不行的。
下面的程序就是利用extern关键字,使用在后边定义的变量。
#include<stdio.h>int func();int main()
{func(); //1extern int num;printf("%d",num); //2return 0;
}int num = 10;int func()
{printf("%d\n",num);
}
2、引用另一个文件中的变量
如果extern这个关键字就这点功能,那么这个关键字就显得多余了,因为上边的程序可以通过将num变量在main函数的上边声明,使得在main函数中也可以使用。
extern这个关键字的真正的作用是引用不在同一个文件中的变量或者函数。
main.c
#include<stdio.h>int main()
{extern int num;printf("%d",num);return 0;
}
b.c
#include<stdio.h>int num = 10;void func()
{printf("fun in a.c");
}
例如,这里b.c中定义了一个变量num,如果main.c中想要引用这个变量,那么可以使用extern这个关键字,注意这里能成功引用的原因是,num这个关键字在b.c中是一个全局变量,也就是说只有当一个变量是一个全局变量时,extern变量才会起作用,向下面这样是不行的。
mian.c
#include<stdio.h>int main() {extern int num;printf("%d",num);return 0; }
b.c
#include<stdio.h>void func() {int num = 5;printf("fun in a.c"); }
另外,extern关键字只需要指明类型和变量名就行了,不能再重新赋值,初始化需要在原文件所在处进行,如果不进行初始化的话,全局变量会被编译器自动初始化为0。像这种写法是不行的。
extern int num=4;
但是在声明之后就可以使用变量名进行修改了,像这样:
#include<stdio.h>int main()
{extern int num;num=1;printf("%d",num);return 0;
}
如果不想这个变量被修改可以使用const关键字进行修饰,写法如下:
mian.c
#include<stdio.h>int main()
{extern const int num;printf("%d",num);return 0;
}
b.c
#include<stdio.h>const int num=10;
void func()
{printf("fun in a.c");
}
使用include将另一个文件全部包含进去可以引用另一个文件中的变量,但是这样做的结果就是,被包含的文件中的所有的变量和方法都可以被这个文件使用,这样就变得不安全,如果只是希望一个文件使用另一个文件中的某个变量还是使用extern关键字更好。
3、引用另一个文件中的函数
extern除了引用另一个文件中的变量外,还可以引用另一个文件中的函数,引用方法和引用变量相似。
mian.c
#include<stdio.h>int main()
{extern void func();func();return 0;
}
b.c
#include<stdio.h>const int num=10;
void func()
{printf("fun in a.c");
}
这里main函数中引用了b.c中的函数func。因为所有的函数都是全局的,所以对函数的extern用法和对全局变量的修饰基本相同,需要注意的就是,需要指明返回值的类型和参数。
C语言extern关键字(去使用外部全局变量、函数)相关推荐
- c语言extern关键字注意事项
c语言中,用extern关键字来修饰一个变量,表示这个变量具有外部链接. 但是不要用extern变量去创建外部定义,即 extern int a; int main(void) {printf(&qu ...
- C语言extern关键字
C语言正确使用extern关键字 利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数 extern关键字,C语言extern关键字用法详解
- C语言应用笔记(六):C语言extern关键字及其使用
C 语言中,修饰符 extern 用在变量或者函数的声明前面,用来标识变量或函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其他文件中寻找其定义.下面对 extern 关键字的几种用法进行说明 ...
- C语言学习及应用笔记之六:C语言extern关键字及其使用
在C语言中,修饰符extern用在变量或者函数的声明前,用来以标识变量或者函数的定义在别的文件中,提示编译器遇到此变量或者函数时,在其它文件中寻找其定义.extern关键字的用法有几种,我们下面对其进 ...
- C语言extern关键字的作用
1.引用同一个文件中的变量 #include<stdio.h>int func();int main() {func(); //1printf("%d",num); / ...
- C语言 extern关键字 实例
如果需要在一个源文件中引用另外一个源文件中定义的变量,我们只需在引用的文件中将变量加上 extern 关键字的声明即可.(来自菜鸟教程) add.c: #include <stdio.h> ...
- c语言extern关键字详解
在c语言中代码的执行顺序是从上往下执行的,如果定义的函数或者变量在调用之后,那么调用的时候编译就会找不到需要使用的变量.这样就会出现错误,如下代码: #include<stdio.h>in ...
- c语言关键字extern作用,c语言extern关键字详解
标签: 在c语言中代码的执行顺序是从上往下执行的,如果定义的函数或者变量在调用之后,那么调用的时候编译就会找不到需要使用的变量.这样就会出现错误,如下代码: #include int main(){ ...
- C语言extern关键字定义外部变量--Redis源码extern使用
在Redis2.8中有networking.c,这个文件没有networking.h networking.c首先引入redis.h这个头文件 #include "redis.h" ...
最新文章
- 嵌入式视频处理考虑(一)
- insight-vmi 编译中的问题
- [概统]本科二年级 概率论与数理统计 第四讲 连续型随机变量
- 74 计算机图形学开源处理库
- error: missing or invalid dependency detected while loading class file 'RDD.class'.
- (10)C#偷懒的开始永无止境的循环?
- 弱电工程标书制作,从入门到精通
- 当年发明“熊猫烧香”病毒的天才,如今怎么样了?
- dep指定版本 go_将 dep 更换为 go mod
- 京东物流数据安全体系
- 手机摄像头的等效焦距
- ARM GICv3 GIC代码分析
- 微信开放平台 帐号管理 绑定在同一个开放平台帐号下的公众号及小程序让用户unionid一致...
- JAVAEE学习day02
- android 展示大图,Android 加载超大图(原图)分析
- js判断身份证号码是否正确
- 做好这三步,你的小程序离“爆款”就不远了
- the markup in the document preceding the root element must be well-formed
- c语言字母意义,C语言 字符串前加L的意义 如:L“A”
- 分享本年度最佳的15个 Photoshop 实例教程