gpt4 book ai didi

c - 如何在 C 中将数组大小放入数组初始化程序本身?

转载 作者:行者123 更新时间:2023-12-04 04:59:49 26 4
gpt4 key购买 nike

我有一个用于通信协议(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com