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