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
关键字只是为了更方便地读/写代码。
关于c - 声明结构的 2 种不同实现之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5632215/