c - 声明结构的 2 种不同实现之间的区别

标签 c data-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 关键字只是为了更方便地读/写代码。

关于c - 声明结构的 2 种不同实现之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5632215/

相关文章:

c - mkdir() 和 "Time of Check, Time of Use"漏洞

c - 最优二叉树搜索

java - List<Entry<K,V>> - 还有比这更标准的吗?

javascript - 如何从数组中删除重复值?当数组中的对象属性未定义时,我的代码失败

c - C 中涉及标签、语句和声明的奇怪错误,代码清理

c - Intel x86 SSE SIMD 指令入门

c - 如何在char中使用For循环?

dictionary - 如果我只想确定一个值是否存在,我应该使用哪种 Swift 数据结构?

database-design - 数据库设计 : best practices to hierarchical structure

c++ - 如何将 new 更改为 malloc?