这是测试代码
extern "C" {int printf(const char *, ...);}
namespace PS
{
int x = 10; // A
// some more code
namespace {
int x = 20; // B
}
// more code
}
int main()
{
printf("%d", PS::x); // prints 10
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法来访问内部(未命名)命名空间的x
内部main
?
我不想改变里面的代码PS
.如果代码看起来非常不切实际,请道歉.
PS:我倾向于x
经常使用这个名字.
否.指定命名空间的唯一方法是按名称,内部命名空间没有名称.
假设您无法重命名任何一个变量,您可以重新打开内部命名空间并添加一个不同名称的访问者函数或引用:
namespace PS {
namespace {
int & inner_x = x;
}
}
printf("%d", PS::inner_x);
Run Code Online (Sandbox Code Playgroud)