我有一个用于通信协议(USB设备描述符)的数组。此协议调用数组头中的数组大小。所以我想这样做(这是禁止的):
static uint8_t array[]= {
TYPE,
sizeof(array),
other data...
};
数组位于内存的只读部分,事实上我不能覆盖相关的单元格,而且我真的不愿意复制它来覆盖单元格(它在最小的嵌入式系统中)。我需要它看起来像“在线上”,因为它将通过DMA。
是否有某种神奇可以解决这个限制?我愿意使用C99或GNU扩展。我不会仅仅为此而改变,但我也对C ++解决方案感到好奇。
答案 0 :(得分:3)
如果您不使用数组,而是使用它看起来像您真正想要的结构,那么它将是可能的:
typedef struct
{ int type, size, other;
} pack_t;
static pack_t a =
{ 10, sizeof(a), 11
};