そんなに大した差ではない気がする…。
マクロだと式を二重に評価してしまうミスを起こしがち。

#define max(n,m) ((n)>(m)?(n):(m))
inline int max(int n,int m){ return n>m?n:m; }

void f(std::istream& in)
{
 int n=max(in.read(),in.read());
}

こういうミスのないように、inlineのほうをオススメしたい。