2009-01-09 137 views

回答

10

事实上,在标准 “C” 它需要指定struct关键字。这在C++中是可选的。

这是一些人这样定义结构的原因:

typedef struct foo { ... } bar; 

能够使用bar而不是struct foo。但是,一些C编译器不执行此规则。

0

如果您键入它,您可以使用“foo”。

6

是的。在C中(而不是C++),结构体在它们自己的命名空间中。所以,如果你定义一个

struct sockaddr { ... } 

你可能不使用它作为

sockaddr s; 
sockaddr *ps; 

为了使这一法律,你可能为了导入类型名称的非结构命名空间使用的typedef:

typedef struct sockaddr { ... } sockaddr; 
sockaddr s, *p; 
0

这取决于如何定义结构。如果使用typedef定义它,则不必将stuct关键字放在前面。

typedef struct 
{ 
// 
} aStruct; 

aStruct abc; 

但如果它不是typedef,则需要struct关键字。

struct aStruct 
{ 
// 
} ; 

struct aStruct abc; 
相关问题