include: Remove 'l' modifier from numeric constants in d3d9caps.h

Kai Tietz ktietz70 at googlemail.com
Wed Oct 26 06:38:06 CDT 2011


2011/10/26 Dmitry Timoshkov <dmitry at baikal.ru>:
> Chris Robinson <chris.kcat at gmail.com> wrote:
>
>> For Wine it doesn't really matter, since we can't use C++. For mingw-w64,
>> however, it could be a big problem if it's not properly typed as a long.
>> Overloads and template types would silently use 'int' where it should be using
>> 'long', and you wouldn't necessarily know until you see odd behavior in the
>> app.
>
> What kind of odd behaviour? Both int and long are 32-bit in win32 and win64.
>
> --
> Dmitry.

See as example for C++:

#include <stdio.h>

void foo (int i) { printf ("int i == %d\n", i); }
void foo (long i) { printf ("long i == %ld\n", i); }

int main ()
{
  foo (1);
  foo (1L);
  return 0;
}

if you compile this program and execute it, then you will see the
following output:

$ ./tst.exe
int i == 1
long i == 1

C++ has the ability to have for same function name different
implementation for different argument types. Means, argument types
getting part of function's signature. So you might see the cause what
is different about suffixed/non-suffixed values for C++.

Regards,
Kai



More information about the wine-devel mailing list