我有一个struct
,如下所示:
struct Foo {
unsigned int id;
unsigned int flag_1 : 1;
unsigned int flag_2 : 1;
unsigned int flag_3 : 1;
// Some arbitrary number of further flags. Code is
// automatically generated and number will vary.
// Notably,it may be more than an int's worth.
int some_data;
float some_more_data;
// ...
};
我不时需要将所有标志重置为零,同时保留其余结构。一种方法显然是将每个标志分别设置为0,但是感觉应该有一种方法可以一次完成。有可能吗?
(请注意,我愿意不使用位域,但这是有时会在内存受限的系统上运行的代码,因此节省内存非常吸引人。)
编辑:
这里有一个类似的问题:Reset all bits in a c bitfield
但是,该问题中的结构完全是 位域。我不能在这里简单地将整个结构memset
router.delete(`/category/:id/delete`,async (req,res) => {
try {
if (!req.params.id) res.send("missing id");
else {
await Product.removeAll({ category: req.params.id });
const categoryToDelete = await Category.findById(req.params.id);
await categoryToDelete.remove();
res.send("category deleted");
}
} catch (error) {
res.status(400).json({ error: error.message });
}
});
设为零,并且不能保证其他涉及并集的答案都能奏效,特别是如果存在的标记值多于int的话。