我正在尝试初始化结构的静态常量数组:

typedef struct{
UINT8 id_array[3];
} __attribute__((packed, aligned(1))) ST_ID;

我按如下方式进行初始化:
static const ST_ID msg_ids[3] =
{
    /* Category A: Protocols */
    {0x8A,      0x01,   0x01}, \
    {0x8A,      0x02,   0x00}, \
    {0x8A,      0x03,   0x00}, \
};

我在编译过程中收到警告:
'注意:'msg_ids'和'warning:initializer周围缺少大括号[-Wmissing大括号]'
运行时的值不正确!!

最佳答案

如果你想用牙套学究,那就应该

static const ST_ID msg_ids[3] =
{
    { { 0x8A, 0x01, 0x01 } },
    { { 0x8A, 0x02, 0x00 } },
    { { 0x8A, 0x03, 0x00 } },
};

这就是海合会希望你做的。
但是,我希望您的原始变量也能产生正确的值(尽管有那个恼人的GCC警告)。
注:为什么你坚持在初始值设定项中的每一行末尾使用\

09-04 17:57