gpt4 book ai didi

c - 有没有更短的方法来初始化结构数组?

转载 作者:行者123 更新时间:2023-11-30 15:40:17 24 4
gpt4 key购买 nike

我有一个像这样的“缓冲区的缓冲区”:

#define BUFFER_MESSAGE_COUNT 5

unsigned char buffer_data[BUFFER_MESSAGE_COUNT][128];

typedef struct {
unsigned char *data;
int size;
int cursor;
} t_buffer;

typedef struct {
int cursor;
int size;
t_buffer buffers[BUFFER_MESSAGE_COUNT];
} t_message_buffer;

t_message_buffer message_buffer = {
0,
BUFFER_MESSAGE_COUNT,
{
{ buffer_data[0], sizeof(buffer_data[0]) / sizeof(char), 0 },
{ buffer_data[1], sizeof(buffer_data[1]) / sizeof(char), 0 },
{ buffer_data[2], sizeof(buffer_data[2]) / sizeof(char), 0 },
{ buffer_data[3], sizeof(buffer_data[3]) / sizeof(char), 0 },
{ buffer_data[4], sizeof(buffer_data[4]) / sizeof(char), 0 }
}
};

有没有比给出所有元素更短/更好的方法来声明和初始化它?

我使用的是 Microchip XC8 编译器,但这个问题可能是普遍存在的。

最佳答案

我假设您正在一个大小很重要的环境中工作(对于变化)。

如果是这样,我不太确定这是初始化 RAM 结构的有效方法。
这将强制编译器为主静态变量初始化分配相同数量的 ROM。

由于结构的内容看起来相当多余,因此使用初始化函数在资源使用方面可能会更有效,并且肯定比初始化宏更具可读性和进化性。

在所有条件相同的情况下,我只会选择初始化函数。

关于c - 有没有更短的方法来初始化结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21069269/

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