[英]difference between 2 different implementations of declaring structures
gcc 4.4.4
c89
我想知道以下兩種定義結構的實現之間的真正區別是什么?
channel.h file
struct channel_tag;
struct channel_tag* init_channel(size_t channel_id);
void dispose_channels(struct channel_tag *channel);
channel.c file
typedef struct channel_tag {
size_t channel_id;
} channel_t;
===================第二實現================
channel.h file
typedef struct channel_tag channel;
channel* init_channel(size_t channel_id);
void dispose_channels(channel *channel);
channel.c file
struct channel_tag {
size_t channel_id;
};
非常感謝任何建議,
在第一種情況下,您有一個數據類型,在第二種情況下,您有兩種數據類型(其中第2個類型定義為第一個)。 生成的代碼沒有區別。 對於許多人來說,省略了多余的struct
關鍵字的代碼讀/寫更加方便。
實現沒有什么不同。 這只是選擇的問題。 就可讀性而言,我更喜歡第二種。 多余的“ _tag”很難看。 Linux內核編碼風格更喜歡沒有typedef的所有結構定義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.