Я хочу, чтобы цикл запускался один раз, если не настроено повторение, но мне не нравится уродство необходимости явно устанавливать переменные как часть обычного программного потока.
Я использую это, но проектСопровождающим это не понравилось:
int ok = 0;
while (ok^=1) {
// ...
if (something_failed) ok = 0;
}
(сравните с while (!ok) { ok = 1; // ...
)
Приятно, что вы можете заключить их в макросы:
#define RETRY(x) while (x^=1)
#define FAIL(x) x = 0
и использовать их как
int ok = 0;
RETRY(ok) {
// ...
if (something_failed) FAIL(ok);
}
Как я могу заставить эти макросы работать без странного xor-assign?