簡體   English   中英

如何初始化具有指向結構數組的指針的結構數組?

[英]How to initialize array of struct that have a pointer to array of struct?

這是我的結構:

struct ini_entry {
    const char *section;
    const char *name;
};

struct ini_parser {
    bool (*parser) (void *ctx, const char *file, struct collection_item **vals, int nval);
    struct ini_entry *entries;
};

這是我的初始值設定項:

static struct ini_parser parsers[] = {
    {NULL, &(struct ini_entry) {"test", "xxx"}}
};

我需要在初始化程序中添加更多的ini_entry 無論如何,在單個聲明中使用靜態初始化來執行此操作嗎?

對不起我的英語不好。

首先, struct ini_entry *entries; 應該是struct ini_entry const *entries; 如果您打算使用struct文字對其進行初始化(即使您沒有這樣做)。

但是這種布局可能更易於閱讀:

struct ini_entry const foo_entries[] = {
    { "test", "xxx" },
    { "flub", "yyy" },
    { "gnas", "zzz" },
    { NULL, NULL }     // list terminator presumably required
};

struct ini_parser const parsers[] = {
    { "foo", foo_entries },
    { "bar", bar_entries }
};

請注意,有可能使用計數列表而不是末尾哨兵; 列表的長度是一個編譯時常量(sizeof foo_entries / sizeof foo_entries[0]) ,您可以將其作為struct ini_parser的第三個成員struct ini_parser

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM