簡體   English   中英

兩種不同的聲明結構實現之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM