在C和C++中,extern
是一个关键字,用于声明一个全局变量或函数,表明它是在其他文件中定义的。extern
声明告诉编译器该变量或函数在当前文件中并没有定义,而是在其他文件中定义的。这使得在一个文件中可以引用另一个文件中定义的变量或函数。
extern
用于全局变量:// File1.c
int globalVar = 42;
// File2.c
extern int globalVar; // 声明 globalVar,告诉编译器它在其他文件中定义
// 使用 globalVar
在上面的例子中,extern int globalVar;
声明告诉编译器,globalVar
是在其他文件中定义的。这使得 File2.c 中可以使用 globalVar
而不会导致重复定义错误。
extern
用于函数声明:// File1.c
void someFunction(); // 函数声明
// File2.c
extern void someFunction(); // 函数声明,告诉编译器它在其他文件中定义
// 使用 someFunction
与全局变量类似,extern
也可以用于函数声明,使得在一个文件中可以调用在其他文件中定义的函数。
extern
用于头文件:通常,extern
与头文件一起使用,以便在多个文件中共享变量或函数的声明。头文件中包含了变量或函数的声明,而实际的定义则在一个或多个源文件中。
// header.h
#ifndef HEADER_H
#define HEADER_H
extern int globalVar; // 在头文件中声明全局变量
void someFunction(); // 在头文件中声明函数
#endif // HEADER_H
然后在实际的源文件中包含头文件并进行定义:
// File1.c
#include "header.h"
int globalVar = 42;
// File2.c
#include "header.h"
void someFunction() {
// 函数实现
}
这样可以确保在多个文件中使用相同的变量和函数声明,避免重复代码并保持一致性。
总体来说,extern
关键字用于告诉编译器某个变量或函数的定义在其他文件中,从而使得这些定义在不同文件中的源代码可以协同工作。