c语言 extern c
更新时间:2023-06-20前言
在C语言中,extern是一个关键字,用于声明变量或函数的外部链接性。当我们在一个源文件中声明一个变量或函数,并且想在另一个源文件中使用它们时,我们可以使用extern关键字来告诉编译器该变量或函数是在其他地方定义的。
1. extern关键字的基本用法
使用extern关键字来声明一个变量时,它会告诉编译器该变量在其他地方定义,而不是当前的源文件中。这样编译器就不会为该变量分配内存空间。
// 源文件1: extern_example1.c
int count; // 声明一个全局变量count
// 源文件2: extern_example2.c
extern int count; // 声明一个在其他地方定义的全局变量count
int main() {
count = 10; // 使用源文件1中的count变量
return 0;
}
在上述示例中,我们在源文件1中声明了一个全局变量count,并在源文件2中使用extern关键字声明该变量。这样,编译器就知道该变量是在其他地方定义的,并且可以在源文件2中使用它。
2. extern关键字用于函数的声明
除了用于变量的声明,extern关键字还可以用于函数的声明,以告诉编译器该函数是在其他地方定义的。
// 源文件1: extern_example1.c
void greet(); // 在源文件2中定义的函数
// 源文件2: extern_example2.c
extern void greet(); // 在其他地方定义的函数声明
int main() {
greet(); // 调用在源文件1中定义的greet函数
return 0;
}
void greet() {
printf("Hello, world!");
}
在上述示例中,我们在源文件1中声明了一个函数greet(),并在源文件2中使用extern关键字进行函数声明。这样,编译器就知道该函数是在其他地方定义的,并且可以在源文件2中调用它。
3. extern关键字的作用范围
在C语言中,extern关键字的作用范围可以是全局的,也可以是局部的。
// 源文件1: extern_example1.c
extern int count; // 声明一个全局变量count
// 源文件2: extern_example2.c
int count; // 定义一个全局变量count
int main() {
extern int count; // 局部作用域的extern声明
count = 10; // 修改局部作用域的count变量
printf("Count: %d", count); // 输出局部作用域的count变量
return 0;
}
在上述示例中,我们在源文件1中使用extern关键字声明了一个全局变量count,并在源文件2中定义了该变量。在main函数中,我们使用extern关键字声明了一个局部作用域的count变量,并对其进行修改和输出。
总结
在C语言中,extern关键字用于声明变量或函数的外部链接性,以告诉编译器它们是在其他地方定义的。它可以用于变量的声明和函数的声明,并且可以适用于全局和局部作用域。这样,我们可以在不同的源文件中共享变量和函数,提高代码的可重用性和模块化。
以上是关于C语言extern关键字的一些基本用法和解释。通过使用extern关键字,我们可以更好地组织和管理代码,并提高代码的可维护性和可读性。