【发布时间】:2017-10-05 18:47:58
【问题描述】:
考虑以下命名空间:
// foo.h
namespace foo
{
extern int bar;
}
//foo.cpp
namespace foo
{
extern int bar = 42;
}
有没有办法在项目的其他地方(即不在命名空间内)更改 bar 的值?
我的意思是这样的:
// in some other .cpp file
#include foo.h
int setBar(int x)
{
foo::bar = x;
}
【问题讨论】:
-
为什么不呢?您是否尝试过并观察到其他东西?但是,您的
extern int bar = 42令人不安。 -
是的,语法与您显示的完全一样。这就提出了一个问题:你为什么要问?
-
这是我在一个更大的项目中遇到的一些问题的一个非常简化的版本。我收到一个链接错误,上面写着:未解析的外部符号。它发生在我将代码更改为类似的东西之后......但也许我错过了其他东西:(
-
唯一应该改变的部分是
foo.cpp中bar的定义应该是:int bar = 42;(提示:将extern和初始化程序结合通常是错误的)。 -
为什么在
.CPP-文件中使用extern?
标签: c++ namespaces extern