-4

在 Windows 中,我可以从命名空间外部看到我在命名空间中声明的任何变量,但是对于 Multi 编译器,它是如此严格,如果您在命名空间 X 中声明了某个变量,则只能在命名空间中访问该变量X,但我也想从命名空间之外访问这个变量。

是否有任何预处理器定义或任何方法可以使这成为可能。这对我来说是必须的,我不能删除命名空间。

任何形式的帮助表示赞赏。

namespace X  
{
   int a = 5;
}

int b = a + 6;

result: a is undefined in multi compiler
4

2 回答 2

2

GHS/Multi 拒绝您的代码是正确的(例如 GCC 也是如此)。
要访问命名空间的成员,请使用范围解析运算符

namespace X  
{
  int a = 5;
}

int main()
{
  int b = X::a + 6;
}
于 2017-06-20T13:00:24.307 回答
0

作为限定每次使用的替代方法:

namespace X  
{
  int a = 5;
}
using X::a; // In the global namespace, a now means X::a

int main()
{
  int b = a + 6; // Per the using-declaration, this is X::a
}
于 2017-06-20T14:07:25.487 回答