我有一个这样的数据结构:
struct foo {
int id;
int route;
int backup_route;
int current_route;
}
以及一个名为 update() 的函数,用于请求其中的更改。
update(42, dont_care, dont_care, new_route);
这真的很长,如果我在结构中添加一些东西,我必须在每次调用 update( ... ) 时添加一个“dont_care”。
我正在考虑将其传递给一个结构体,但预先用“dont_care”填充该结构体比在函数调用中拼写出来更乏味。我可以在某处创建默认值不关心的结构,并在将其声明为局部变量后仅设置我关心的字段吗?
struct foo bar = { .id = 42, .current_route = new_route };
update(&bar);
将我想要表达的信息传递给更新函数的最优雅的方法是什么?
我希望其他所有内容都默认为-1(“不关心”的密码)
虽然宏和/或函数(如已经建议的那样)可以工作(并且可能具有其他积极效果(即调试挂钩)),但它们比所需的更复杂。最简单也可能是最优雅的解决方案是定义一个用于变量初始化的常量:
const struct foo FOO_DONT_CARE = { // or maybe FOO_DEFAULT or something
dont_care, dont_care, dont_care, dont_care
};
...
struct foo bar = FOO_DONT_CARE;
bar.id = 42;
bar.current_route = new_route;
update(&bar);
这段代码实际上没有理解间接寻址的心理开销,并且非常清楚其中的哪些字段bar
您明确设置,同时(安全地)忽略您未设置的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)