【发布时间】:2009-04-02 13:27:23
【问题描述】:
在一个软件项目(一些旧的 C 编译器)中,我们有很多变量必须正常保存和反转。
有人知道如何制作这样的宏吗?
SET(SomeVariable, 137);
哪个会执行
SomeVariable = 137;
SomeVariable_inverse = ~137;
编辑:
最好的解决方案似乎是:
#define SET(var,value) do { var = (value); var##_inverse = ~(value); } while(0)
感谢您的回答
【问题讨论】:
-
如果你想表明这是最好的解决方案,你应该选择那个作为“接受”的解决方案;为贡献它的用户提供声誉奖励,并将其标记为解决您的问题的解决方案。
-
宏是否也应该在进行赋值之前确保 var = ~var_inverse ?做 { 断言(var == ~var##_inverse); var = (值); var##_inverse = ~(value); } 而 (0)。如果你在任何地方都使用这个宏,这是你最好的检查机会。