c++ - 在 .cpp 中声明外部变量而不是头文件有什么用?

标签 c++ extern

据我所知,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/

相关文章:

用于使用开关展开循环的 C++ 模板?

c++ - labels_graph 上的广度优先搜索

c++ - 使用辅助函数 (c++) 定义运行时已知的全局常量变量

c - 外部、标题、全局变量

c++ - 如何使用 COM 智能指针作为调用的输入输出参数库函数

c++ - 预期的声明说明符或 '...' 之前的 'boolean'

C静态内联函数调用extern函数的动机

c - 在 C 函数中声明外部变量?

c++ - 这是有效的优化吗?

c - 在C中,功能的extern关键字完全必要吗?