Как это называется, когда блок возвращает значение?

Я недавно сталкивался с этим кодом, который не выглядит законным для меня (но его компилирует gcc). Я не столько возражаю против строительства, сколько хочу назвать его:

#define MAX(a,b) \
({ \
    typeof(a) _a = (a); \
    typeof(b) _b = (b); \
    (_a > _b) ? (_a) : (_b); \
})

По-видимому, значение последнего оператора возвращается как «значение» выражения, ограниченного пространством имен.

Редактировать: Спасибо за ответы, ребята. Оказывается, это расширение простого C, называемого выражениями операторов.

Ответы на вопрос(5)

Ваш ответ на вопрос