C++ extern关键字

发布时间 2023-07-23 12:49:33作者: Dba_sys

首先,一个文件中的变量或者函数,它的可视范围只在这个文件中,其他文件是不会知晓定义在另一个文件中的变量和函数的。

extern 关键字的作用就是,告知编译器,这里有一个变量或者函数的声明,它的定义你得去其他合作者那里去找。这就是所有了。

C++或者C是一个组合多文件进行合作编程的语言。他们的合作是由编译器进行组织的。所以我们会发现编译器玩的是 .cpp 文件。

并且,如果我们需要使用一个变量或者函数,它必须在这个 .cpp 文件中有它的声明(declaration),才可以使用,这是前提,当然他也一定要相关的有定义(definition)。

每一个 .cpp 文件(包含着许多变量和函数的定义)都自成体系,可以被编译成 库文件(二进制文件), 完成了从 ASCII 到 二进制的升华,便于其他文件的使用,而使用说明书被抽象成 .h

比较关键的是

int i;	// 既是声明也是定义
int j = 1;	// 既是声明也是定义
void int add(int a, int b);	// 只是声明

代码

TestExtern
	|____ main.cpp
	|____ other.cpp
	|____ CMakeLists.txt
//	main.cpp
#include<iostream>

extern int a;

int main(){
    std::cout<< a << std::endl;
    return 0;
}
// other.cpp
int a = 5;
# CMakeLists.txt
cmake_minimum_required(VERSION 3.14)
project(testExtern)

add_executable(testExtern main.cpp other.cpp)

other.cpp 被编译成 静态库 或者 动态库 链接到 main.cpp 上也可以执行。