The canonical use of which being safe min&#x2F;max:<p><pre><code>    #define min(a, b) ({ \
      __typeof__(a) _a = (a); \
      __typeof__(b) _b = (b); \
      _a &gt; _b ? _b : _a; \
    })

    #define max(a, b) ({ \
      __typeof__(a) _a = (a); \
      __typeof__(b) _b = (b); \
      _b &gt; _a ? _b : _a; \
    })
</code></pre>
which avoid evaluating their arguments twice.