2010-11-18 23 views
0

Burada açıklandığı gibi, varsayılan değeri olan bir yapı oluşturmaya çalışıyorum: Default values in a C Struct.C Değişken eksik başlatıcıya sahip

/* tokens.h */ 
typedef struct { 
    char *ID; 
    char *KEY; 
    char *TYPE; 
} tokens; 

const struct tokens TOKENS_DFLT = { 
    "id", 
    "key", 
    "type" 
}; 

Ve söylememde hattı 7 üzerinde bir hata alıyorum:

error: variable 'TOKENS_DFLT' has initializer but incomplete type 

kimse bu sorunun ne olduğunu bana açıklayabilir misiniz ve nasıl Ancak, ben bir başlık dosyası içinde, bu C kodu var Düzeltebilir ve gelecekte onu engelleyebilir miyim?

cevap

3

struct tokens tanımlamamışsınız. Adsız bir struct ve eşzamanlı olarak typedef'u tokens türüne göre tanımladınız.

yerine Sonra olduğuna dair karar

typedef struct tokens_ { 
    char *ID; 
    char *KEY; 
    char *TYPE; 
} tokens; 

tanımlanmış olsaydı senin sabit olarak ya:

const struct tokens_ TOKENS_DFLT = { ... }; 

Ya

const tokens TOKENS_DFLT = { ... }; 

Olduğu gibi

, sen arasındalar iki dışkı.

+0

Teşekkürler, –

+0

şimdi ne tespit ettiyse şimdi bir uyarı alıyorum: 'Boş beyannamede nsyess depolama sınıfı belirteci ' –

2

Bu:

const struct tokens TOKENS_DFLT = { 
    "id", 
    "key", 
    "type" 
}; 

olmalıdır:

Eğer struct tokens anlamında adını tokens tanımladığınız yana
const tokens TOKENS_DFLT = { 
    "id", 
    "key", 
    "type" 
}; 

.

İlgili konular