[英]something about C++ unnamed namespace
#include <iostream>
namespace
{
int a=1;
}
int a=2,b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}
我用我的g ++編譯它,但輸出是23,誰可以解釋它? 是一種訪問<unnamed> namespace ::a
嗎?
不,你不能。 你可以這樣解決它:
namespace
{
namespace xxx
{
int a = 1;
}
}
...
std::cout << xxx::a << ::b;
::
in ::a
指的是全局命名空間。 應該只通過a
訪問匿名命名空間(或者更具體地說,你根本不應該這樣做)
使用未命名的命名空間,這是不可能的。 請參閱以下文章
你必須去命名命名空間。
您可以訪問全局命名空間,但不要重新定義它。
#include <iostream>
namespace
{
int a=1;
}
int b=3;
int main(void)
{
std::cout<<::a<<::b;
return 0;
}
這里出局是13。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.