代码之家  ›  专栏  ›  技术社区  ›  Szymon Nowaczyk - Słomian

如果在一个项目中有两个.cpp文件声明了相同的变量,那么如果只有一个是静态的,为什么链接器不显示错误?

  •  0
  • Szymon Nowaczyk - Słomian  · 技术社区  · 2 年前

    假设我们有两个 .cpp 文件: main.cpp another.cpp ,并且它们都在一个项目中。在里面 main.cpp 我们创建全局变量 static int foo = 10 和在 另一个.cpp 我们创造 int foo = 20

    现在,如果他们两个都不是- static ,链接器会通知我们一个错误,指示声明了一个变量的多个实例。但在前面提到的例子中,Clion实际上编译时没有出错。

    据我所知,这两个变量都可以在 main.cpp ,即使只有非- 静止的 一个在中可见 另一个.cpp 。为什么链接器不要求两者都是 静止的 ?

    0 回复  |  直到 2 年前