【问题标题】:typedef struct A A in CC语言中的typedef struct A A
【发布时间】:2017-03-25 17:13:50
【问题描述】:

这是否意味着什么:

typedef struct spBone spBone;
struct spBone {
...
}

我在 .c 文件的标头中找到了上述内容。将 non-alternative 名称分配给结构的副作用是什么?

【问题讨论】:

  • 如果它在 .c 中,那么它可能是 C 而不是 C++
  • 没有意义 - 删除它。
  • 你为什么要为这个关于 C++ 的问题提出其他语言的代码?
  • 嗯...这正是它的意思。它是 C 语言中一个有用且广泛使用的习语。不过,尚不清楚您所说的“非替代”是什么意思。它所做的只是为 struct spBone 类型分配较短的名称 spBone

标签: c struct typedef


【解决方案1】:

首先,请记住 C 和 C++ 是不同的语言。 C++ 植根于 C,但走向了一些非常不同的方向。这是其中之一。

在 C 中声明或定义 struct 类型的变量时,必须始终使用关键字 struct。例如

struct spBone myspBone;

是必需的。早在 1970 年代,为什么需要这样做就很有意义。

但是,程序员正在将spBone 建立为struct spBone 的别名,以便他们可以使用别名和

spBone myspBone;

就像在 C++ 中一样。

【讨论】:

  • 天哪,我没有注意到 struct 关键字 after typedef,即使我复制粘贴了它。
猜你喜欢
  • 2013-12-16
  • 1970-01-01
  • 2022-06-30
  • 2019-07-27
  • 2011-01-14
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多