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

Variable declaration at the end of typedef structure definition

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

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

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

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

现在是否强制单独声明对象

vertex v1;

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

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

不,不可能。

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

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

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

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

vertex v;
struct ver v1;