سؤال

أحاول صنع بنية ذات قيمة افتراضية ، كما هو موضح هنا: القيم الافتراضية في بنية 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top