Why putting a macros argument in parentheses leads to an error? : <p>I have one very interesting question about preprocessor directives in c++.</p>

<p>Consider the following macros and his usage:</p>

<pre><code>    #define FUNCTION(a, b) void (a)(int &amp;current, int candidate)\
    {\
        if ((current b candidate) == false){\      // Marked Line    
            current = candidate;\
        }\
    }

    FUNCTION(minimum, &lt;)
    FUNCTION(maximum, &gt;)
</code></pre>

<p>My question is why changing the "Marked Line" with the following line of code won't even compile:</p>

<pre><code>     ... if ((current (b) candidate) == false) ...
</code></pre>
