c - 为什么不对 C 中的结构使用 typedef?

标签 c struct typedef

<分区>

我正在研究一个用于 ARM 低功耗设备的 C 应用程序,我首先有这段代码

struct state {
    float position;
    int dummy;
};

注意这个结构没有定义新类型,我也注意到后面的代码中这个结构是这样使用的

struct state mystate;

这对我来说很奇怪而且不方便,不灵活并且有一个额外的无用关键字,我可以很容易地避免首先使用 typedef 作为结构。

这是一个对该应用程序的业务逻辑至关重要的结构,在源代码中也被大量使用。

对于最终用作类型的结构不使用 typedef 有什么特别的原因吗?

最佳答案

我认为 typedef 有害。我认为它几乎总是被误用。在我看来,它很有用,而且只有在底层类型被完全抽象时才有用——例如所有操作都是通过函数进行的。否则,底层类型没有被抽象——用户仍然必须知道它是什么,才能理解代码——所发生的只是代码的可读性受损,类型命名空间没有获得(对于类型未正确抽象)扩展。

在我看来,几乎所有 typedef 的使用都缺乏对它带来的问题以及应该如何使用它的理解。

关于c - 为什么不对 C 中的结构使用 typedef?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416924/

相关文章:

尝试保存字节顺序时的 Python struct.pack() 'struct.error: bad char in struct format'

c - 在 C 中取消分配结构内部的内存

c - 无法访问 svOpenArrayHandle 的维度

c - Linux 重定向到多个目标

c - *初学者 *C 让我对警告感到困惑

c++ - 污染全局命名空间

c - 哪个 Linux 内核函数创建了 'process 0' ?

c - 使用内联汇编将 int 保存在来自结构指针的函数变量中

c++ - typedef 默认模板类型为同名

c - 在 C 中获取 typedef 的名称?