2009-01-09 28 views

Respuesta

10

De hecho, en la norma "C" se requiere para especificar struct palabra clave. Esto es opcional en C++.

Esta es la razón por la que algunas personas definen estructuras de esta manera:

typedef struct foo { ... } bar; 

para poder utilizar en lugar de barstruct foo. Sin embargo, algunos compiladores de C no hacen cumplir esta regla.

0

Puedes usar simplemente "foo" si lo escribes.

6

Sí. En C (a diferencia de C++), las estructuras están en su propio espacio de nombres. Así que si ha definido un

struct sockaddr { ... } 

no se puede utilizar como

sockaddr s; 
sockaddr *ps; 

Con el fin de hacer que el legal, puede utilizar typedef con el fin de importar en el espacio de nombres no-estructura de nombres de tipos:

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

Depende de cómo se define la estructura. Si se define utilizando un typedef, no tiene que poner la palabra clave stuct al frente.

typedef struct 
{ 
// 
} aStruct; 

aStruct abc; 

pero si no es un typedef necesita la palabra clave struct.

struct aStruct 
{ 
// 
} ; 

struct aStruct abc; 
Cuestiones relacionadas