2

我有一个用于通信协议(USB 设备描述符)的数组。该协议要求数组头中的数组大小。所以我想这样做(这是被禁止的):

static uint8_t array[]= {
    TYPE,
    sizeof(array),
    other data...
};

该数组位于内存的只读部分中,事后我无法覆盖相关的单元格,而且我也不太愿意复制它来覆盖单元格(它在最小的嵌入式系统中)。我需要它看起来像“在线”,因为它将通过 DMA。

是否有某种魔法可以解决这个限制?我愿意使用 C99 或 GNU 扩展。我不会仅仅为此而切换,但我也对 C++ 解决方案感到好奇。

4

1 回答 1

3

如果您不使用数组,而是使用您真正想要的结构,那么它是可能的:

typedef struct
{       int     type, size, other;
} pack_t;
static pack_t a =
{       10, sizeof(a), 11
};
于 2013-04-29T19:47:59.750 回答