1.5.1 下畫線前綴的使用
下畫線前綴的主要作用是防止命名污染,因此對靜態變量或局部變量使用下畫線前綴并無意義。在實踐中,我們經常對非公開的extern
類型(也就是全局)的變量或函數使用下畫線前綴,例如:
extern size_t __total_mem_use;
為一個變量加上一個或兩個下畫線符號作為前綴,通常表示這個變量是非公開的外部變量。對于靜態變量或局部變量,使用下畫線前綴只會給其他程序員造成困擾,因此不建議使用。
另外,在結構體的定義中,可能包括一些隱藏(或者保留內部使用的)成員。對于這些成員,我們也可追加下畫線前綴。在下面這個結構體(pcrdr_msg
)的對外定義中,就包含這樣的4個成員:
/** the renderer message structure */ struct pcrdr_msg { unsigned int __refcnt; purc_atom_t __origin; void *__padding1; // reserved for struct list_head void *__padding2; // reserved for struct list_head pcrdr_msg_type type; pcrdr_msg_target target; pcrdr_msg_element_type elementType; pcrdr_msg_data_type dataType; ... };
之所以這樣做,是因為我們不希望外部模塊訪問這4個僅供內部模塊使用的成員。在內部模塊中,我們可通過另一個結構體(pcrdr_msg_hdr
)來訪問這4個成員,只需要將結構體pcrdr_msg
的指針強制轉換為結構體pcrdr_msg_hdr
的指針即可:
struct list_head { struct list_head *next; struct list_head *prev; }; /* the header of the struct pcrdr_msg */ struct pcrdr_msg_hdr { atomic_uint refcnt; purc_atom_t origin; struct list_head ln; };
推薦閱讀
- Java程序設計與開發
- 小創客玩轉圖形化編程
- 編程珠璣(續)
- Oracle 12c中文版數據庫管理、應用與開發實踐教程 (清華電腦學堂)
- OpenStack Cloud Computing Cookbook(Fourth Edition)
- Data Analysis with Stata
- Rust Essentials(Second Edition)
- 微信小程序全棧開發技術與實戰(微課版)
- Mastering Python Design Patterns
- Beginning C++ Game Programming
- 區塊鏈國產化實踐指南:基于Fabric 2.0
- GitHub入門與實踐
- Mastering jQuery Mobile
- JavaScript前端開發基礎教程
- 軟件設計模式(Java版)