2009-01-09 102 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; 
相關問題