匿名命名空間(轉)

C++另外有一種匿名的命名空間,來保證生成的符號是局部的,這樣對於匿名空間中的變量等,外部都是不可見的.
//test3.cpp

static void bar(){}

namespace //匿名的命名空間
{
    float bar2;
    int foo;
}
//test4.cpp
extern int foo;
extern void bar();
extern float bar2; 
int main()
{
bar();                    //外部的bar()被聲明爲static,這裏連接不到符號.不能訪問
bar2 = 0.1f;          //外部的匿名空間哩,這裏也不能訪問.
foo = 0xFF;
return 0;
};//若是將test4的目標和test3的目標進行連接,其實是找不到這些符號的.連接會失敗.
匿名的命名空間是C++的特性,相對於C的static聲明來講,能夠在匿名的空間裏面聲明不少變量和函數,這樣能夠省去了對每一個變量和函數添加static聲明.
實質上匿名空間的功能跟static聲明是同樣的.

轉自:http://www.javashuo.com/article/p-movrskya-db.html
相關文章
相關標籤/搜索