龙空技术网

C语言extern,如何声明函数和变量?如何赋值?linux C第31讲

远峰linux编程学堂 214

前言:

此时我们对“c语言中全局变量的定义的实质是什么”大约比较着重,同学们都需要分析一些“c语言中全局变量的定义的实质是什么”的相关文章。那么小编在网上搜集了一些关于“c语言中全局变量的定义的实质是什么””的相关内容,希望小伙伴们能喜欢,同学们快快来学习一下吧!

extern 关键字

C语言提供了extern关键字,用于声明变量和函数,说明该变量或函数是在其他源文件中定义,那么,当前模块可以不用定义该变量和函数,就可以直接使用该变量和函数。

下面我们举例介绍extern关键字的使用。首先,创建一个test.c源文件,源文件的代码如下:

然后,再创建test1.c源文件,添加代码如下:

程序运行结果如下:

可以看到,我们在test.c源文件中定义了全局变量value和func函数。那么,要在test1.c源文件中使用变量value和func函数的时候,就可以使用extern关键字,在test1.c源文件中,声明变量value和func函数是在其他源文件中定义了。

那么,编译器在编译test1.c源文件的时候,碰到变量value和func函数的使用,但是,在当前test1.c源文件中没有发现变量value和func函数的定义。此时,不会提示错误。因为,在test1.c源文件中使用了extern关键字声明变量value和func函数,表示变量value和func函数在其他源文件中定义。

最后,编译器编译test.c源文件,发现了变量value和func函数的定义。那么,就认为test1.c源文件中使用变量value和func函数是合法的,最终,编译程序成功。

5 extern声明变量赋值

C语言提供了extern关键字来修饰变量和函数,extern关键字只是用于“声明”变量,并不是定义变量。例如在test.c源文件中定义了全局变量:

int value = 8;

此时,定义了变量value,并且初始化了数值8。那么,在其他源文件中使用extern关键字声明变量value的时候,声明格式如下:

extern int value;

此时,只是声明变量value是int类型,并不需要给变量初始化赋值。

如果写成:

extern int value = 1;

那么,在ubuntu系统中使用gcc编译,就会提示value变量重复定义。

注意:如果是在XP环境下使用vc6.0编译,可以编译成功并运行,变量value的初始值还是8,并没有被修改设置为1数值。

程序测试代码如下:

(1) 在test.c源文件中定义变量

//定义全局变量

int value = 8;

(2) 在test1.c源文件中声明使用变量

程序运行结果如下:

可以看到,编译错误,提示重复定义value变量。

在XP系统下,使用VC 6.0的编译系统,可以编译成功并运行。输出变量value的初始值是8,并不是1。所以,可以看到,使用extern关键字对变量进行声明的时候,不用对其进行初始化赋值。因为,使用extern关键字只是声明变量,不是定义变量。

标签: #c语言中全局变量的定义的实质是什么