On Sat, Feb 22, 2014 at 1:34 AM, Ian Romanick <i...@freedesktop.org> wrote:
> On 02/21/2014 03:15 PM, Marek Olšák wrote:
>>
>> The main reason _min exists is that it evaluates each parameter once,
>> while MIN2 evaluates each parameter twice, so in this case, MIN2 calls
>> the get_param function twice, which may not be desirable. The same for
>> the other macros.
>
>
> There is a GCC extension that cope with this, but I don't know if other
> compilers support it.  It has existed in GCC for a decade or more. Directly
> from the GCC documentation:
>
>      #define max(a,b) \
>        ({ typeof (a) _a = (a); \
>            typeof (b) _b = (b); \
>          _a > _b ? _a : _b; })
>
> If some variation of this works with MSVC, maybe we could just "fix" our
> MIN2 and MAX2 macros.

It doesn't seem to work on MSVC 2012, at least. There's decltype[1]
which is similar to typeof, but it doesn't seem like it's too happy
about stuffing compount statements inside function call parameter
lists etc.

[1] http://msdn.microsoft.com/en-us/library/dd537655.aspx
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to