大家好,今天小编关注到一个比较有意思的话题,就是关于c语言中extern是什么意思的问题,于是小编就整理了5个相关介绍c语言中extern是什么意思的解答,让我们一起看看吧。

  1. extern是什么变量?
  2. c语言中的extern怎么用?
  3. extern与头文件的区别和联系?
  4. C语言中关键字extern和static的区别是什么?
  5. c语言extern跟static可以一起用吗?

extern是什么变量

是一个修饰符。

c语言中extern是什么意思-c语言中的extern
(图片来源网络,侵删)

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

c语言中extern是什么意思-c语言中的extern
(图片来源网络,侵删)

c语言中的extern怎么用?

extern在c中就是个外部申明,因为C是先申明再使用,当你想调用的变量或者函数不在你的模块当中,你可以使用外部申明。在使用外部申明的时候要特别注意,因为这只是个申明,并不是实体,当出现声明和实体不符的时候,编译器是不会管的,链接后就可能出现错误。比如你的实体是 int sample( int x ) ;而你在申明的时候是extern int sample( void ) ; 所以我不喜欢这种方式去声明。特别是多个人合作项目的时候,这种方法往往导致的结果很难去debug。即使是别人写好提供给你的,那他在修改了函数或者变量的类型,参数,往往会忘记修改给你的申明。

extern 还有个作用就是当你C和C++混用的时候,比如在C++中要使用C, 那么就要告诉编译器,你这段代码使用的是C,需要用C的编译器去编译,那可以使用extern "C" { .........} 否则编译会有问题

c语言中extern是什么意思-c语言中的extern
(图片来源网络,侵删)

extern与头文件的区别和联系?

在 C 语言中 extern 是关键字,global 不是。一个变量是不是 global 变量是由作用域决定的,当变量在全局作用域中声明时,这个变量就是 全局 变量。当 extern 修饰一个变量时,就表明这个变量并不是在这里声明的。比如,你在头文件里声明了一个变量,那么为了在源程序中显得清楚明白,在源程序中应该加上一个 extern 修饰的该变量的声明。extern 也可以用于前向声明(Forward Declaration)。比如这样:

除了变量以外,extern 也可以修饰函数。C 语言中常见的一个错误是 unresolved externals,这常常会由没有引用库文件导致,由此可推知库文件中的函数是用 extern 修饰的。

C语言中关键字extern和static的区别是什么?

你这个问题相当牛,几乎完全没有关系的两个关键字,区别确实不好回答。联系估计就是都是类型修饰符,区别太多。一般来说,extern 修饰的是全局变量或者函数,表示外部引用。对于C++语言还有一个特殊用法,extern "C" 表示该段程序应认为是C语言编写。

static 一般表示局部静态变量,可以用在函数内,也可以用在文件内。

c语言extern跟static可以一起用吗?

//head file library.h

#ifndef LIBRARY_H

#define LIBRARY_h

extern FILE* logfile; //declaring an extern file pointer

/*other random codes*/

#endif

//end of head file

//source code main.c

#include

#include"library.h"

FILE* logfile; // declare the extern pointer is used in this file

int main()

{

logfile=fopen(...);

//main function

return 0;

}

//end of main.c

//source code backend.c

#include"libarary.h"

static FILE* logfile=fopen(...);

/*other random codes*/

//end of backend.c

如上所述,extern在头文件中声明一个跨文件的全局变量,每一个需要使用这个变量的文件都要单独声明(不加extern再声明一遍)

而static用于声明一个静态变量。静态变量不能被其他文件访问,因此可以与其他文件的全局变量同名。另外如果一个变量在文件中被声明为静态变量以后,该文件不能再有同名的跨文件全局变量

到此,以上就是小编对于c语言中extern是什么意思的问题就介绍到这了,希望介绍关于c语言中extern是什么意思的5点解答对大家有用。