Because ‘<‘ is a binary operator and it cannot be evaluated without an operand on either side. You can verify this without macros simply by attempting to compile the following code:
bool LessThan( int a, int b )
{
return( a (<) b );
}
At the very least you should see “expected an expression” or a similar error.
4
solved Why putting a macros argument in parentheses leads to an error? [closed]