<返回更多

深入理解 C++:extern 关键字的妙用与陷阱

2023-11-22  微信公众号  coding日记
加入收藏

extern 关键字

定义和用法

extern 关键字似乎应该是 static 的反义词,用于为其前面的名称指定外部链接,并且在某些情况下确实可以这样使用。例如,默认情况下,const 和 typedef 具有内部链接。你可以使用 extern 来赋予它们外部链接。

然而,extern 有一些复杂性。当你将一个名称指定为 extern 时,编译器将其视为声明而不是定义。对于变量,这意味着编译器不会为变量分配空间。你必须为变量提供一个单独的不带 extern 关键字的定义行。例如,以下是 AnotherFile.cpp 的内容:

extern int x;
int x { 3 };

或者,你可以在 extern 语句中初始化 x,这样它就同时作为声明和定义:

extern int x { 3 };

在这种情况下,extern 并不是很有用,因为 x 默认具有外部链接。extern 的真正用途在于当你想从另一个源文件 FirstFile.cpp 中使用 x 时:

import <IOStream>;
extern int x;
int mAIn() {
    std::cout << x << std::endl;
}

在这里,FirstFile.cpp 使用 extern 声明来使用 x。编译器需要 x 的声明才能在 main() 中使用它。如果你没有 extern 关键字声明 x,编译器会认为它是一个定义,并为 x 分配空间,导致链接步骤失败(因为全局范围内会有两个 x 变量)。有了 extern,你可以使变量在多个源文件中全局可访问。

关键词:C++      点击(17)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多C++相关>>>