C语言中的extern:全局变量和函数的声明与使用

概念:

在C语言中,extern是一个关键字,用于声明全局变量和函数。它告诉编译器该变量或函数在其他源文件中定义,让编译器知道在链接时需要从其他源文件中寻找其定义。extern关键字不会分配内存,只是告诉编译器该变量或函数存在于其他源文件中。

全局变量的声明:

在某个源文件中声明全局变量时,如果需要在其他源文件中使用它,我们需要在其他源文件中使用extern关键字进行声明,以便编译器知道该变量的存在。

示例:

在file1.c文件中声明全局变量num:

int num; // 全局变量声明

在file2.c文件中使用file1.c文件中声明的全局变量num:

extern int num; // 使用extern关键字进行声明

函数的声明和使用:

在某个源文件中声明函数时,如果需要在其他源文件中调用该函数,我们需要在其他源文件中使用extern关键字进行声明,以便编译器知道该函数的存在。

示例:

在file1.c文件中声明函数add:

int add(int a, int b); // 函数声明

在file2.c文件中使用file1.c文件中声明的函数add:

extern int add(int a, int b); // 使用extern关键字进行声明

int main() {

int result = add(2, 3); // 调用外部定义的函数

...

}

注意事项:

extern关键字只能用于全局变量和函数的声明,不能用于局部变量。

声明一个全局变量或函数时,如果不加extern关键字,则默认为extern。

如果一个全局变量或函数在某个源文件中定义,而在其他源文件中使用时,需要在使用它的源文件中进行声明,以便编译器知道该变量或函数的存在。

使用extern关键字声明的变量或函数,需要保证其在链接时是可见的,即在链接阶段能够找到其定义。

使用场景:

extern关键字主要用于多个源文件间共享全局变量和函数的情况。当我们需要在多个源文件中使用同一个全局变量或函数时,可以在其中一个源文件中定义它,然后在其他源文件中使用extern关键字进行声明,从而在编译和链接过程中正确地引用和使用它。

总结:

extern是C语言中的一个关键字,用于声明全局变量和函数。它告诉编译器该变量或函数在其他源文件中定义,以便在链接时从其他源文件中寻找其定义。我们可以使用extern关键字在一个源文件中声明全局变量和函数,从而在其他源文件中使用它们。通过合理使用extern关键字,我们可以实现在不同源文件间共享全局变量和函数的目的。

 

你可能感兴趣的:(专搞C语言,c语言)