[英]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.