2009-01-09 19 views

Odpowiedz

10

W rzeczywistości, w standardzie "C" nie jest to wymagane, aby określić struct słowa kluczowego. Jest to opcjonalne w C++.

To jest powód, niektórzy ludzie definiują konstrukcjom tak:

typedef struct foo { ... } bar; 

aby móc korzystać bar zamiast struct foo. Jednak niektóre kompilatory języka C nie wymuszają tej reguły.

0

Możesz użyć po prostu "foo", jeśli je wpisałeś.

6

Tak. W C (w przeciwieństwie do C++), struktury są we własnej przestrzeni nazw. Więc jeśli zdefiniował

struct sockaddr { ... } 

może nie wykorzystać go jako

sockaddr s; 
sockaddr *ps; 

Aby zrobić to legalne, można używać typedef w celu zaimportowania do nazw non-struct nazw typu:

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

Zależy od sposobu zdefiniowania struktury. Jeśli jest zdefiniowany za pomocą typedef, nie musisz wstawiać słowa kluczowego z przodu.

typedef struct 
{ 
// 
} aStruct; 

aStruct abc; 

ale jeśli nie jest to typedef, potrzebujesz słowa kluczowego struct.

struct aStruct 
{ 
// 
} ; 

struct aStruct abc; 
Powiązane problemy