gpt4 book ai didi

c++ - 两个不同的 .cpp 文件中的 C/C++ 作用域

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:52:50 25 4
gpt4 key购买 nike

我想知道为什么您不能在两个不同的 .cpp 文件中声明一个具有相同名称的全局变量。我的理解是考虑范围,它应该只对那个特定的 .cpp 文件可见,而不是其他地方,但它显然是在提示。我这样做的原因是为了代码的通用性,仅此而已。有什么想法吗?

编辑清晰

a.cpp

int g_x;

b.cpp

int g_x;

最佳答案

要使全局变量(或函数)仅对其声明的文件可见,

  1. 将其声明为static,或者
  2. (在 C++ 中首选的方式)将变量放在无名命名空间中。看起来这会使它无法从 namespace 外部访问,但它实际上所做的是使它对它所在的文件可见。

要访问在其他文件中声明的全局变量(不是 static 或在匿名命名空间中),请使用 extern

原因与不能在两个不同文件中具有相同名称的函数的原因相同。它混淆了链接器,因为默认情况下全局变量具有外部链接。 static 或在匿名命名空间中为它们提供了内部链接,这使它们就像一个“局部全局变量”。

关于c++ - 两个不同的 .cpp 文件中的 C/C++ 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8329871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com