Typedef结构定义末尾的变量声明

时间:2019-05-10 05:30:59

标签: c struct typedef c89

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

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

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

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

现在必须用

分别声明对象吗?
vertex v1;

在这种情况下,是否可以不将它们附加在结构定义的末尾?

2 个答案:

答案 0 :(得分:2)

如果使用“存储类” typedef,则在结构之后定义的名称为typedef名称-结构类型的别名。因此,vertex是类型名称。定义类型名称时,也不能定义任何变量。

答案 1 :(得分:2)

不,不能。

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

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

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

一旦创建了类型(别名),就可以使用它来使用另一个标识符(例如

)来创建变量
vertex v;
struct ver v1;