2010-10-08 36 views
20

Tôi có định nghĩa này loại struct:dự kiến ​​specifier-vòng-list trước

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

Khi biên dịch, gcc ném lỗi này:

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

này có nghĩa là gì? Nó không có vẻ liên quan đến các câu hỏi khác với lỗi này.

+0

bản sao có thể có của [Danh sách được liên kết trong C, không có lỗi thành viên] (http://stackoverflow.com/questions/3869110/linked-list-in-c-no-member-error) –

+0

@Prasoon: Có, nhưng câu trả lời được chấp nhận không đầy đủ. – schot

+0

@schot: Rất tiếc, tôi không thấy nhận xét. Sửa chữa nó. Cảm ơn. –

Trả lời

22

Bạn đã sử dụng confType trước khi khai báo. (cho tiếp theo). Thay vào đó, hãy thử này:

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

Cảm ơn! Rõ ràng bây giờ tôi đã thấy điều này. –

+0

@Delan Azabani: Cảm ơn bạn đã sửa câu trả lời của tôi. :) – JoshD

14

câu trả lời JoshD bây giờ là chính xác, tôi thường đi cho một biến thể tương đương:

typedef struct confType confType; 

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

Khi bạn chỉ muốn để lộ con trỏ đục, bạn đặt typedef trong tập tin tiêu đề của bạn (giao diện) và khai báo struct trong tệp nguồn của bạn (triển khai).

Các vấn đề liên quan