c语言中用extern声明的变量是如何找到它的
时间: 2024-04-12 16:33:00 浏览: 26
在C语言中,使用`extern`关键字声明的变量是外部变量,它并不会在当前文件中定义,而是在其他文件中定义。当使用`extern`声明一个变量时,编译器会在其他文件中寻找该变量的定义。
具体的查找过程如下:
1. 首先,编译器会在当前文件的作用域内查找该变量的定义。如果找到了匹配的定义,则使用该定义。
2. 如果在当前文件的作用域内没有找到匹配的定义,编译器会继续查找其他已经被编译的文件中是否存在该变量的定义。
3. 如果在其他已编译文件中找到了匹配的定义,编译器会将该变量的地址保存下来,以便在链接阶段将其与当前文件中的引用连接起来。
4. 如果在其他已编译文件中也没有找到匹配的定义,编译器将会报错,提示找不到该变量的定义。
在链接阶段,连接器会将所有引用了外部变量的文件与定义了这些变量的文件进行连接,确保所有引用外部变量的地方都能正确地访问到实际的变量。
总结起来,`extern`声明的变量通过编译器和连接器的协作,在其他文件中找到其定义,并确保正确地访问到该变量。
相关问题
extern修饰全局变量C语言
extern是C语言中用来声明全局变量或函数的关键字。它的作用是告诉编译器该变量或函数是在其他文件中定义的,而不是当前文件中定义的。
当我们在一个文件中使用extern修饰全局变量时,它表示该变量在其他文件中已经定义了。这样,在编译时,编译器会在其他文件中查找该变量的定义,并将其链接到当前文件中。
使用extern修饰全局变量的语法如下:
extern 数据类型 变量名;
例如,我们在文件A.c中定义了一个全局变量num:
int num;
如果我们在文件B.c中想要使用这个全局变量,可以在B.c中使用extern关键字进行声明:
extern int num;
这样,编译器就知道num是在其他文件中定义的全局变量,并会将其链接到B.c中。
需要注意的是,extern关键字只是用来声明全局变量或函数,并不会为其分配内存空间。实际的内存分配是在定义该变量或函数的文件中进行的。
C语言中 extern是什么意思
在C语言中,关键字extern用于声明一个变量或函数是在其他文件中定义的,而不是当前文件中定义的。它告诉编译器在链接时在其他文件中寻找该变量或函数的定义。extern通常用于在多个源文件中共享变量或函数的定义,以避免重复定义和减少代码冗余。在使用extern时,需要注意变量或函数的定义必须在其他文件中可见,否则会导致链接错误。