我有一个在通信协议(protocol)中使用的数组(USB 设备描述符)。该协议(protocol)要求数组头中包含数组大小。所以我想这样做(这是禁止的):
static uint8_t array[]= {
TYPE,
sizeof(array),
other data...
};
数组位于内存的只读部分,事后我无法覆盖相关单元格,而且我不太愿意复制它来覆盖单元格(它位于最小的嵌入式系统中)。我需要它看起来像“在线”,因为它将通过 DMA。
是否有某种魔法可以解决这个限制?我愿意使用 C99 或 GNU 扩展。我不会仅仅为此而切换,但我也对 C++ 解决方案感到好奇。
最佳答案
如果您不使用数组,而是使用结构,这看起来是您真正想要的,那么这是可能的:
typedef struct
{ int type, size, other;
} pack_t;
static pack_t a =
{ 10, sizeof(a), 11
};
关于c - 如何在 C 中将数组大小放入数组初始值设定项本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16286690/