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