小编Cha*_*son的帖子

sizeof复合文字数组

我试图静态分配一些结构,每个结构包含两个成员:一个指向结构数组的指针,以及该数组的大小.

这是代码的工作版本:

#define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0]))

struct conf_element {
        char *key;
        enum conf_elem_type val_type;
        void *val_p;
        tok_t *(*fn_p)(const char *js, jsmntok_t *tok);
};

struct conf_schema {
        struct conf_element *conf_elems;
        size_t size;
};

struct conf_element conf_schema_antennae_elems[] = {
        {"key1_nm", LEAF_INT, NULL, NULL},
        {"key2_nm", LEAF_INT, NULL, NULL}
};

struct conf_schema conf_schema_antennae = {
        conf_schema_antennae_elems,
        ARRAY_SIZE(conf_schema_antennae_elems)
};
Run Code Online (Sandbox Code Playgroud)

但是,不是单独定义数组,然后在定义结构时引用该数组,我想用数组文字初始化指针,以便在结构定义中包含它,以便我相信增加可读性:

struct conf_schema conf_schema_antennae = {
        (struct conf_element []) {
                {"key1_nm", LEAF_INT, NULL, NULL},
                {"key2_nm", LEAF_INT, NULL, NULL}
        },
        /* the size of that ^ …
Run Code Online (Sandbox Code Playgroud)

c sizeof c99 compound-literals static-allocation

5
推荐指数
1
解决办法
346
查看次数

标签 统计

c ×1

c99 ×1

compound-literals ×1

sizeof ×1

static-allocation ×1