我有一个与 C 中的结构初始化有关的问题。我有一个结构:
struct TestStruct
{
u8 status;
u8 flag1;
u8 flag2;
};
我想要一个通用函数/宏来初始化这个结构并设置一个参数的值,例如状态=1,简单的方法是:
TestStruct t = {};
t.status = 1;
但是,通过这样做,我将 status 的值设置了两次,第一次在 init 函数中设置为 0,第二次将其设置为 1(优化没有帮助?)。
(请不要告诉我 t = {1,0,0} 我正在寻找一种通用方式)
我正在考虑 init 函数中的宏,例如:
#define INIT_TESTSTRUCT (param, value) \
{ .status=0, .flag1=0, .flag2=0, .param=value }
TestStruct t = INIT_TESTSTRUCT(status, 0);
但是,编译器给出错误“已覆盖初始化字段”,因为我已经设置了两次状态的值。
请帮助指出如何更改宏以实现我想要的,非常感谢。