C++ 关于C++;未命名的命名空间 #包括 名称空间 { INTA=1; } INTA=2,b=3; 内部主(空) { std::cout
使用未命名的名称空间,这是不可能的。请参阅下面的文章C++ 关于C++;未命名的命名空间 #包括 名称空间 { INTA=1; } INTA=2,b=3; 内部主(空) { std::cout,c++,namespaces,C++,Namespaces,使用未命名的名称空间,这是不可能的。请参阅下面的文章 您必须选择命名名称空间。不,您不能。您可以这样解决它: #include <iostream> namespace { int a=1; } int a=2,b=3; int main(void) { std::cout<<::a<<::b; return 0; } 名称空间 { 名称空间xxx { INTA=1; } } ... std::cout
您必须选择命名名称空间。不,您不能。您可以这样解决它:
#include <iostream>
namespace
{
int a=1;
}
int a=2,b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}
名称空间
{
名称空间xxx
{
INTA=1;
}
}
...
std::cout:
中的:a
指全局名称空间。匿名名称空间应通过a
访问(或者更具体地说,您根本不应该这样做)您可以访问全局名称空间,但不要重新定义它
namespace
{
namespace xxx
{
int a = 1;
}
}
...
std::cout << xxx::a << ::b;
#包括
名称空间
{
INTA=1;
}
int b=3;
内部主(空)
{
std::coutthank you for help~,我只是混淆了全局名称空间和匿名名称空间~@visitor:要访问匿名a还是全局a?如果从询问者提供的代码中删除:
,那么代码将无法编译(简单的a
可以同时引用这两个)。类似地,如果要删除全局a
,则a
和::a
似乎都是指未命名的a
(抱歉,但答案似乎完全错误。)UncleBens:我可能错了,是的,您可以通过使用a和::a访问匿名a,但是,尽管我这里没有定义,但我非常确定::的定义是在匿名之前更喜欢全局名称空间。
#include <iostream>
namespace
{
int a=1;
}
int b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}