据我所知,extern关键字用于声明需要在多个文件中使用的全局变量。通常extern关键字定义在头文件中,并在许多.cpp或头文件中重用
昨天我在我们的代码库中看到一个特殊的(?)用法,作者 在 .cpp 中声明一个外部变量并在 main.cpp 中定义该变量
d.cpp
extern int whatever; //yes, it is declared in .cpp but not .h
主要.cpp
#include "d.hpp"
int whatever = 100;
int main()
{
//do something
}
在 .cpp 而不是 .h 中声明外部变量有什么优点和缺点?以前从未听说过这样的技术,也无法通过 google 找到示例。
最佳答案
没有意义。如果 d.cpp 需要这个外部变量,那么它应该通过包含一些头文件来获取它。如果出于某种原因 main 的作者出于某种原因决定将“whatever”称为“int whatever”更好,您将遇到难以发现的链接器错误。如果 main 的作者将其更改为“char whatever”;然后每当 d.cpp 写入它认为是“extern int whatever”的内容时;它会覆盖一些内存,导致可能很难找到错误。
关于c++ - 在 .cpp 中声明外部变量而不是头文件有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712327/