这个结构定义究竟意味着什么?

时间:2014-01-02 07:12:47

标签: c struct typedef

抱歉这个新手问题,但我在网上找不到任何好资源来解释这意味着什么:

struct {
  struct spinlock lock;
  struct proc proc[NPROC]; //NPROC = 64
} ptable;

我通过网络查看资源并找到这些类型的定义结构:

//first method
struct Foo { ... };

//second method
typedef struct Foo { ... } Foo;

2 个答案:

答案 0 :(得分:2)

struct foo { ... };

struct标签(此处为foo)是可选的。如果在示例中省略它,则可以使用此类型的变量ptable,但稍后无法定义此类型的其他变量。

答案 1 :(得分:1)

struct 
{
  struct spinlock lock;
  struct proc proc[NPROC]; //NPROC = 64
}
ptable;

这定义了一个nameless struct,同时声明了一个名为ptable的变量

正如Yu Hao所指出的,您以后不能定义此结构类型的变量。您可以在定义无名结构

时生成尽可能多的变量
struct 
{
   /* your variables*/
} a,b[2] ;

与命名结构相反,

struct my_struct
{
   /* your variables*/
} a,b[2] ;

您可以稍后将变量定义为struct my_struct c