Цитата(scifi @ Oct 20 2013, 11:42)

Но вообще этот макрос - зло, так как он непереносим. Я бы сделал традиционно:
Код
#define max(a, b) ((a) > (b) ? (a) : (b))
Дело в том, что этот макрос - из ядра линукса, так что переносимость ему особо не нужна.
Ваш вариант проигрывает ему в том, что значение выражения a или b будет вычислено более одного раза. То есть, если в качестве a или b передать функцию, то она может быть вызвана дважды. И если эта функция с побочными эффектами, то получится совсем нехорошо.
ЗЫ. Всё это прекрасно и переносимо разруливается плюсами и шаблонами, но тов. Торвальдс не любит плюсы
Если бы я знал, что такое электричество...