W jaki sposób makro lambda tworzy lambda?

Znalazłem ten fragment kodu na GitHub, ale nie do końca go zrozumiałem: #define lambda(ret_type, _body) ({ ret_type _ _body _; }) Następnie: int (*max)(int, int) = lambda(int, (int x, int y) { return x > y ? x : y; }); int max_value = max(1, 2); // max_value is 2 Co robią podkreślenia...