大家好,今天小编关注到一个比较有意思的话题,就是关于c语言中extern是什么意思的问题,于是小编就整理了3个相关介绍c语言中extern是什么意思的解答,让我们一起看看吧。
c语言全局变量extern怎么用?
在C语言中,extern关键字用于声明一个全局变量,表示该变量在其他文件中定义,当前文件中只是引用该变量。使用extern关键字的语法格式如下:
其中,数据类型表示变量的类型,变量名表示变量的名称。使用extern关键字声明的变量可以在当前文件中使用,但是其定义必须在其他文件中进行。例如,在文件A中声明一个全局变量:
extern int global_var;
在文件B中定义该全局变量:
int global_var = 10;
在文件A中就可以使用该全局变量了,例如:
#include <stdio.h> extern int global_var; int main() { printf(34;global_var = %d ", global_var); return 0; }
需要注意的是,extern关键字只是声明一个全局变量,而不是定义它。因此,在使用extern关键字声明全局变量时,必须在其他文件中定义该变量,否则会导致链接错误
C语言的extern关键字用来声明一个变量是在其他地方定义的,这样在当前作用域中使用该变量时,就不会将其分配内存。
具体用法是在使用该变量之前先声明其为extern类型,同时需要在其他文件中定义该变量。
这样可以避免在多文件程序中重复定义变量而导致编译器的错误。
需要注意extern变量的作用域只能在一个文件内,而不能在整个程序中生效。
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。
如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:
extern int f(); 和int f();
当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,比较习惯在所有的函数声明前添加extern修饰。
C语言中关键字extern和static的区别是什么?
你这个问题相当牛,几乎完全没有关系的两个关键字,区别确实不好回答。联系估计就是都是类型修饰符,区别太多。一般来说,extern 修饰的是全局变量或者函数,表示外部引用。对于c++语言还有一个特殊用法,extern "C" 表示该段程序应认为是C语言编写。
static 一般表示局部静态变量,可以用在函数内,也可以用在文件内。
在C++ 程序中调用被c编译器编译后的函数,为什么要加extern "c" 声明?
总之,重点就是C++里面支持函数的重载,因此编译出来的.obj或者库文件里面,函数名会被加上和参数有关的签名,用来区分同样函数名参数不同的函数。然而C语言不支持重载,所以函数名里面没有这样的签名。
这样,当C语言的程序调用C++写成的库的时候,就会找不到函数。
比如,一个函数叫 void foo(int bar)之类的,可能会在c++编译成叫 foo_i之类的名字,而在c语言里面就会编译成foo,这样c语言的程序去找foo就会找不到,这样连接的时候会出错。
为了解决这个问题,引入了extrn "c"{},在这个的作用域之内,c++的函数名不会加上参数签名,和c语言的标准保持统一,就兼容c语言的程序了。
到此,以上就是小编对于c语言中extern是什么意思的问题就介绍到这了,希望介绍关于c语言中extern是什么意思的3点解答对大家有用。