無名的命名空間

2022-04-29 18:21:07 字數 549 閱讀 3519

以上介紹的是有名字的命名空間,c++還允許使用沒有名字的命名空間,如在檔案a中宣告了以下的無名命名空間:

namespace //命名空間沒有名字

{ void fun( ) //定 義命名空間成員

{ cout<<"ok."《由於命名空間沒有名字,在其他檔案中顯然無法引用,它只在本檔案的作用域內有效。無名命名空間的成員fun函式的作用域為檔案a(確切地說,是從宣告無名命名空間的位置開始到檔案a結束)。在檔案a中使用無名命名空間的成員,不必(也無法)用命名空間名限定。

如果 在檔案a中有以下語句:

fun();

則執行無名命名空間中的成員fun函式,輸出」ok.」。

在本程式中的其他檔案中也無法使用該fun函式,也就是把fun函式的作用域限制在本檔案範圍中。可以聯想到:在c浯言中可以用static宣告乙個函式,其作用也是使該函式的作用域限於本檔案。c++保留了用static宣告函式的用法,同時提供了用無名命名空間來實現這一功能。隨著越來越多的c++ 編譯系統實現了ansi c++建議的命名空間的機制,相信使用無名命名空間成員的方法將會取代以前習慣用的對全域性變數的靜態宣告。

C 無名命名空間詳解

將一組宣告包裹在乙個命名空間中就是為了避免可能的名字衝突,保持 的區域性性。例如,一段 示例 include header.h namespace mine int g 但是有時我們並不希望名字mine被區域性的環境之外知道,此時名字mine似乎多餘了,因此我們可以省去這個mine名字 直接改寫為 ...

c 中無名命名空間的使用

突然使用到無名命名空間,查詢後,記錄 命名空間是程式設計者命名的記憶體區域,程式設計者根據需指定一些有名字的空間域,把一些全域性實體分別存放到各個命名空間中,從而與其他全域性實體分隔開。通俗的說,每個名字空間都是乙個名字空間域,存放在名字空間域中的全域性實體只在本空間域內有效。名字空間對全域性實體加...

C 命名空間 預設命名空間與匿名命名空間

2.匿名命名空間 預設命名空間也叫全域性命名空間,所有沒有置於某一具體命名空間下的 即在預設命名空間下,例如func main 函式。include void func void intmain int argc,char ar void func void 需要注意的是 這個就是類似於c語言裡簡單...