2010-10-08 12 views
20

tengo esta definición de tipo de estructura:especificador-calificador lista de espera antes de

typedef struct { 
    char *key; 
    long canTag; 
    long canSet; 
    long allowMultiple; 
    confType *next; 
} confType; 

Al compilar, gcc lanza este error:

conf.c:6: error: expected specifier-qualifier-list before ‘confType’ 

¿Qué significa esto? No parece estar relacionado con otras preguntas con este error.

+0

posible duplicado de [Lista enlazada en C, sin error de miembro] (http://stackoverflow.com/questions/3869110/linked-list-in-c-no-member-error) –

+0

@Prasoon: Sí, pero la respuesta aceptada allí es incompleta. – schot

+0

@schot: Lo siento, no vi los comentarios. Corregido. Gracias. –

Respuesta

22

Usó confType antes de declararlo. (para el próximo). En su lugar, intente esto:

typedef struct confType { 
    char *key; 
    long canTag; 
    long canSet; 
    long allowMultiple; 
    struct confType *next; 
} confType; 
+0

¡Gracias! Es obvio ahora que he visto esto. –

+0

@Delan Azabani: Gracias por corregir mi respuesta. :) – JoshD

14

respuesta de JoshD ahora es correcta, por lo general van por una variante equivalente:

typedef struct confType confType; 

struct confType { 
    char *key; 
    long canTag; 
    long canSet; 
    long allowMultiple; 
    confType *next; 
}; 

Cuando sólo se desea exponer puntero opaco, se pone el typedef en el archivo de cabecera (interfaz) y la declaración struct en su archivo fuente (implementación).

Cuestiones relacionadas