C语言中,extern关键字怎么使用?最好解释清楚一点。

如题所述

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。
如果你定义A.cpp和B.cpp中都定义了全局变量i。那么分别编译,都可以通过,但是链接时就会报错。
B.obj : error LNK2005: "int i" (?i@@3HA) already defined in A.obj

反之,如果我们希望A.cpp和B.cpp中使用的i是同一个i。也就是两个文件,共同使用同一个全局变量。如果我们不在B.cpp中定义i。那么编译时就会报错,提示
error C2065: 'i' : undeclared identifier
如果我们定义i就会出现上面所说的错误。

于是,我们需要extern关键字。告诉编译器。这个i我们在别的模块中定义过了。你要编译的话,取别的模块找一找。这样程序就能够自动去A.cpp中寻找i的定义。并且让它在B.cpp中可以被使用。追问

那在B.cpp中要使用变量 i 时,除了加extern声明外,还需要以头文件的形式把A.cpp包含进去吗,如果不#includes"A.cpp",我试过,程序B.cpp编译时会报错:变量 i 未定义。

追答

你用的是Visual Studio吧。我也试过,在这个编译器里,加不加效果看不出来。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-03-11
其实说简单点就是你有两个以上的.C文件,如果把一个变量或者函数声明为extern,例:在文件a.c中声明extern a;那么这个变量a,就可以在文件b.c中使用,否则在b.c中无法使用这个变量。本回答被提问者采纳

C语言中,extern关键字怎么使用?最好解释清楚一点。
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。如果你定义A.cpp和B.cpp中...

C语言中extern的用法
1. 变量和函数声明:extern可以用于变量和函数的声明,提示编译器在其他文件中查找定义。例如,如果在一个源文件中定义了数组`char a[6]`,而在另一个文件中,错误地声明为`extern char *a;`,这会导致运行时错误,因为指针与数组是不同的类型。正确的做法是将声明改为`extern char a[];`。2. ...

c语言中extern的意思是什么?
在C语言中,`extern`是一个关键字,主要用于声明一个变量或函数是在其他文件中定义的。通过使用`extern`关键字,我们可以告诉编译器该变量或函数在其他地方已经定义,这里只是引用。这样,在编译时,编译器会确保链接到正确的位置以获取其实际的值或实现。二、变量声明与外部引用 当我们在一个文件中声明...

c语言中extern的意思是什么??
C语言中extern的含义是外部变量声明。详细解释如下:1. extern的基本含义 在C语言中,extern关键字用于声明一个变量是在其他文件中定义的。通过使用extern关键字,可以在当前文件中引用在其他地方定义的变量。这意味着,你可以在一个文件中声明一个变量,并在另一个文件中定义和初始化它。这使得代码的组织...

C语言中extern关键字的作用
extern 关键字 声明一个“外部变量” 。有了这个声明,就可以从声明开始的地方,合法地使用该外部变量了。在例1中,我们在最后才定义了外部变量 g_X , g_Y ,由于外部变量定义的位置在main函数之后,因此本来我们在main函数中是不能够引用 g_X , g_Y 的,因为在使用的时候并没有定义它们的数值...

c语言中extern在函数声明中是什么意思?
详细解释如下:1. extern关键字的基本含义 在C语言中,extern关键字用于声明变量或函数,表示该变量或函数的实际存储或实现在其他地方,但可以在当前文件中使用。简单来说,extern就是一种声明机制,告诉编译器该变量或函数在其他地方已经定义,这里只是引用。2. 在函数声明中的应用 当我们在一个文件中...

C语言关键字extern详解
问题二:extern在函数与变量调用中的高效作用。extern允许跨文件调用函数与变量,只需在引用文件中声明extern即可使用。extern声明变量可放在任意位置,不必局限于文件作用域。问题三:extern定义全局变量时的问题与教训。C语言不允许在函数外部直接赋值给全局变量,只能在声明时赋值。区分初始化与赋值的概念,...

c语言中的extern是什么,有什么作用啊?
在C语言中,extern是一个关键字,它的主要作用是标识函数或变量的定义在当前编译单元之外。具体来说,它有以下两个应用场景:首先,当你在某个C文件中声明一个函数,如:extern void add(int x, int y);,这意味着这个函数的实现并不在这个文件里,而是在另一个文件中定义。这样做有助于代码的...

extern在c语言中是什么意思?
在C语言中,extern关键字用于声明一个变量或函数是在其他文件中定义的。接下来,我将详细解释这个概念:一、变量声明与外部变量 在C语言中,当我们想要使用一个变量,但不想在当前的代码块中定义它时,就可以使用extern关键字进行声明。这种变量通常被称为外部变量或全局变量。通过extern声明,我们可以告诉...

c语言extern
答案:C语言中的`extern`关键字主要用于声明一个变量或者函数是在其他文件中定义的。使用`extern`关键字可以让编译器知道该变量或函数的存在,这样在当前文件中就可以使用它。具体来说,`extern`主要用于在头文件和实现文件之间建立联系。详细解释:在C语言中,`extern`是一个存储类说明符,它告诉编译器...

相似回答