2010-10-08 8 views
20

ho questa definizione di tipo struct:atteso specificatore-qualificatore-list prima

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

Quando si compila, gcc getta questo errore:

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

Cosa significa? Non sembra correlato ad altre domande con questo errore.

+0

possibile duplicato di [Elenco collegato in C, nessun errore membro] (http://stackoverflow.com/questions/3869110/linked-list-in-c-no-member-error) –

+0

@Prasoon: Sì, ma la risposta accettata non è completa. – schot

+0

@schot: Scusa se non ho visto i commenti. Corretto Grazie. –

risposta

22

Hai usato confType prima di dichiararlo. (per il prossimo). Invece, provate questo:

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

Grazie! È ovvio ora che ho visto questo. –

+0

@Delan Azabani: Grazie per aver corretto la mia risposta. :) – JoshD

14

risposta di JoshD ora è corretta, di solito andare per una variante equivalente:

typedef struct confType confType; 

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

Se solo si desidera esporre puntatori opachi, si mette la typedef nel file di intestazione (interfaccia) e la dichiarazione struct nel file di origine (implementazione).

Problemi correlati