我想声明一个带有灵活数组成员的结构,然后sizeof()
在它上面使用。原型是:
typedef struct
{
uint16_t length;
uint8_t array[][2];
} FLEXIBLE_t;
然后我声明它:
const FLEXIBLE_t test = {
.length = sizeof(test),
.array = { { 0, 1 },
{ 2, 3 },
{ 4, 5 },
{ 6, 7 },
{ 8, 9 } }
};
一切都可以编译(GCC),但是当我检查test.length
它时它的值为 2,即它只计算它uint16_t
本身length
。
如何在编译时计算结构的大小?似乎编译器使用原型而不是特定实例。