C語言也有命名空間,可分位4類命名空間。
目前創(chuàng)新互聯(lián)建站已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計、三江侗網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
4類命名空間:
所有的標(biāo)簽(label)都屬于同一個命名空間。說明:①在同一個函數(shù)內(nèi),你的標(biāo)簽不能相同。②在同一個函數(shù)內(nèi),標(biāo)簽可以和其他變量名稱相同。因為它們所屬的命名空間不同。
struct
、enum
和union
的名稱,在 C99 中稱之為 tag,所有的 tag 屬于同一個命名空間。也就是說,如果你已經(jīng)聲明struct A { int a };
?就不能再聲明union A{ int a };
了。
之所以讓所有的 tag 組成一個命名空間,由于 tag 前面總是帶struct
,enum
或union
關(guān)鍵字,所以編譯器可以將它們與其他的標(biāo)識符區(qū)分開。
struct
和union
的成員屬于一個命名空間,而且是相互獨立的。例如:如果你已經(jīng)聲明struct A { int a };
?,其成員的名稱為a
,你仍然可以聲明?struct B{ int a };
或者union B{ int a };
。之所以讓struct
和union
的成員各自成為一個命名空間,是因為它們的成員訪問時,需要通過 “.”或”->”運(yùn)算符,而不會單獨使用,所以編譯器可以將它們與其他的標(biāo)識符區(qū)分開。由于枚舉類型enum
的成員可以單獨使用,所以枚舉類型的成員不在這一名稱空間內(nèi)。
其他所有的標(biāo)識符,屬于同一個名稱空間。包括變量名、函數(shù)名、函數(shù)參數(shù),宏定義、typedef
的類型名、enum
的成員 等等。注意:如果標(biāo)識符出現(xiàn)重名的情況,宏定義會覆蓋所有其它標(biāo)識符,這是因為它在預(yù)處理階段而不是編譯階段處理。除了宏定義之外其它類別的標(biāo)識符,處理規(guī)則是:內(nèi)層作用域會隱藏掉外層作用域的標(biāo)識符。
平時寫 C 程序從來沒有想過 C 語言還有命名空間這事,有什么用呢?在《 C 語言接口與實現(xiàn)》這本神作中,大量使用typedef struct T *T;
這種形式(其中T
就是struct T *
)的用法,遵循一定的約定,利用 C 語言的這種簡單的命令規(guī)則也可以獲得一些好處,使代碼更精巧,可讀性更好。
更多技術(shù)分享:Virbox 技術(shù)博客
網(wǎng)頁名稱:C語言的命名空間
標(biāo)題路徑:http://www.rwnh.cn/article8/jddpop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、外貿(mào)建站、定制網(wǎng)站、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)