يتغير C متغير غير مكتمل
-
26-09-2019 - |
سؤال
أحاول صنع بنية ذات قيمة افتراضية ، كما هو موضح هنا: القيم الافتراضية في بنية C.. ومع ذلك ، لدي هذا الرمز C ، داخل ملف رأس:
/* tokens.h */
typedef struct {
char *ID;
char *KEY;
char *TYPE;
} tokens;
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
وأنا أحصل على خطأ في السطر 7 قائلاً:
error: variable 'TOKENS_DFLT' has initializer but incomplete type
هل يمكن لأي شخص أن يشرح لي ما هي هذه المشكلة وكيف يمكنني إصلاحها ومنعها في المستقبل؟
المحلول
لم تحدد struct tokens
. لقد حددت لم يكشف عن اسمه struct
وفي وقت واحد typedef
-D IT إلى اسم النوع tokens
.
إذا كنت قد حددت بدلاً من ذلك
typedef struct tokens_ {
char *ID;
char *KEY;
char *TYPE;
} tokens;
ثم يمكنك إعلان ثابتك أيضاً:
const struct tokens_ TOKENS_DFLT = { ... };
أو
const tokens TOKENS_DFLT = { ... };
كما هو ، أنت بين اثنين من البراز.
نصائح أخرى
هذه:
const struct tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
يجب ان يكون:
const tokens TOKENS_DFLT = {
"id",
"key",
"type"
};
منذ أن حددت الاسم tokens
ليعني struct tokens
.
لا تنتمي إلى StackOverflow