定义
用于声明变量或函数的外部链接性,使它们的定义可能在另一个文件或作用域中。
作用
1. 与C连用
当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的;
示例:
C 文件: c_function.c
c++
#include <stdio.h>
void hello() {
printf("Hello from C function\n");
}
C++ 文件: main.cpp
c++
#include <iostream>
extern "C" void hello(); // 告诉编译器这是一个 C 函数
int main() {
hello(); // 调用 C 函数
return 0;
}
2.声明函数和变量
当它作为一个对函数或者全局变量的外部声明,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。
假设有两个文件:
文件1: file1.cpp
c++
#include <iostream>
using namespace std;
int globalVar = 42; // 定义全局变量
void printVar() {
cout << "Global variable: " << globalVar << endl;
}
文件2: file2.cpp
C++
#include <iostream>
using namespace std;
// 声明外部变量
extern int globalVar;
// 声明外部函数
extern void printVar();
int main() {
printVar(); // 调用 file1.cpp 中的函数
cout << "Global variable in main: " << globalVar << endl;
return 0;
}
编译并链接:
C++
g++ file1.cpp file2.cpp -o output
./output
输出:
C++
Global variable: 42
Global variable in main: 42