【问题标题】:Variable declaration at the end of typedef structure definitiontypedef 结构定义末尾的变量声明
【发布时间】:2019-05-10 05:30:59
【问题描述】:

我们知道结构对象可以像这样在结构定义的末尾声明:

struct vertex
{
float x,y,z;
}v1;

是不是像v1这样的对象声明 使用 typedef struct 时可能吗?

typedef struct vertex
{
float x,y,z;
} vertex;

现在是否必须用

单独声明对象
vertex v1;

在这种情况下,它们不能附加在结构定义的末尾吗?

【问题讨论】:

  • 你不能这样做,因为它没有任何意义。 typedef 是要为该类型创建的所有变量的模板。它不是一个变量。

标签: c struct typedef c89


【解决方案1】:

不,不可能。

typedef 用于为另一种类型创建别名/同义词。不能用于变量声明。

typedef struct ver
{
float x,y,z;
} vertex;

这里,vertexstruct ver 相同(为了更好理解,我稍微更改了名称)。

创建类型(别名)后,您可以使用它来使用另一个标识符创建变量,例如

vertex v;
struct ver v1;

【讨论】:

    【解决方案2】:

    如果您使用“存储类”typedef,那么在结构之后定义的名称就是 typedef 名称——结构类型的别名。所以,vertex 是一个类型名称。定义类型名称时,不能同时定义任何变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多