#define X \ if (Type v = expr) ; else X f(v); // все хорошо if (1) X g(v); // все хорошо, но gcc дает warning suggest explicit braces to avoid ambiguous 'else'