官术网_书友最值得收藏!

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;
};
主站蜘蛛池模板: 五家渠市| 新化县| 九龙县| 南投市| 滁州市| 浦北县| 鸡泽县| 宁海县| 武鸣县| 通江县| 南川市| 遵义县| 汕尾市| 蓬溪县| 渭源县| 马关县| 临洮县| 沂水县| 田林县| 遂昌县| 阿荣旗| 红河县| 日土县| 兴业县| 沧州市| 盈江县| 突泉县| 涪陵区| 宁都县| 扬州市| 白水县| 滦平县| 晋江市| 边坝县| 赤城县| 万安县| 永福县| 屏南县| 横峰县| 启东市| 揭阳市|