在Windows中,我可以看到我在命名空间中从该命名空间外部声明的任何变量,但是当涉及到Multi编译器时,它是如此严格,如果你在命名空间X中声明了一些变量,则必须访问该变量仅在命名空间X中,但我也希望从命名空间中访问此变量。
是否有任何预处理器定义或任何方法使其成为可能。这对我来说是必须的,我无法删除命名空间。
感谢任何形式的帮助。
namespace X
{
int a = 5;
}
int b = a + 6;
result: a is undefined in multi compiler
答案 0 :(得分:2)
GHS / Multi拒绝您的代码(as is GCC, for example)是正确的 要访问命名空间的成员,请使用scope resolution operator:
namespace X
{
int a = 5;
}
int main()
{
int b = X::a + 6;
}
答案 1 :(得分: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
}