В программном проекте (некоторый старый компилятор C) у нас есть много переменных, которые должны быть сохранены нормальными и инвертированными.Макро вопросы
Есть ли у кого-нибудь идея, как я могу сделать такой макрос?
SET(SomeVariable, 137);
, который будет выполнять
SomeVariable = 137;
SomeVariable_inverse = ~137;
Edit:
Самое лучшее решение, кажется:
#define SET(var,value) do { var = (value); var##_inverse = ~(value); } while(0)
Спасибо за ответы
Если вы хотите указать, что это лучшее решение, вы должны выбрать его как «принятое» решение; который дает бонус репутации пользователю, который внес свой вклад, и отмечает его как решение, которое решило вашу проблему. –
Должен ли макрос также иметь возможность гарантировать, что var = ~ var_inverse сразу перед выполнением задания? do {assert (var == ~ var ## _ inverse); var = (значение); var ## _ inverse = ~ (value); } while (0). Если вы используете этот макрос везде, это ваш лучший шанс проверить. –