Обсуждение: Suppress compiler warnings on mingw
Here is a patch to suppress compiler warnings in mingw build.
- Remove unused local variables.
- Cast DWORD to unsigned integer explicitly.
DWORD is always 32bit integer on both 32bit and 64bit Windows.
Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center
Вложения
ITAGAKI Takahiro wrote: > - Cast DWORD to unsigned integer explicitly. > DWORD is always 32bit integer on both 32bit and 64bit Windows. I think if that is so, you wouldn't need to add any casts. Instead you would only need to use the right format specifier.
Peter Eisentraut <peter_e@gmx.net> wrote: > ITAGAKI Takahiro wrote: > > - Cast DWORD to unsigned integer explicitly. > > DWORD is always 32bit integer on both 32bit and 64bit Windows. > > I think if that is so, you wouldn't need to add any casts. Instead you would > only need to use the right format specifier. DWORD is an alias for 'unsigned long' in 32bit Windows. Do you know how it defined in 64bit Windows? Postgres requires sizeof(long) = sizeof(void *), but sizeof(DWORD) is always 4. I fear the formatter for long integer might be broken in 64bit platform. If we could expect C99 is always available, 'PRIu32' would be the best choice. Regards, --- ITAGAKI Takahiro NTT Open Source Software Center
On Fri, 14 Mar 2008, ITAGAKI Takahiro wrote:
> DWORD is an alias for 'unsigned long' in 32bit Windows.
> Do you know how it defined in 64bit Windows?
sizeof(DWORD) is always 4, even on 64-bit windows. sizeof(long) is also
always 4. If you want the unsigned integral type that is the same size as
pointers, there are some MS-defined types you can use: DWORD_PTR,
LONG_PTR, ULONG_PTR. Or use the standard size_t and ptrdiff_t.
>
> Postgres requires sizeof(long) = sizeof(void *)
Which is why 64-bit windows is not supported. Hopefully at some point
someone can remove this restriction, but it is likely to be a major
undertaking...
>, but sizeof(DWORD) is
> always 4. I fear the formatter for long integer might be broken
> in 64bit platform.
>
> If we could expect C99 is always available, 'PRIu32' would be the best choice.
>
> Regards,
> ---
> ITAGAKI Takahiro
> NTT Open Source Software Center
>
>
>
>
--
Worst Month of 1981 for Downhill Skiing:
August. The lines are the shortest, though.
-- Steve Rubenstein
ITAGAKI Takahiro wrote: > DWORD is an alias for 'unsigned long' in 32bit Windows. Then try using %lu and no casts. That should get rid of the warnings the proper way.
Peter Eisentraut <peter_e@gmx.net> wrote: > Then try using %lu and no casts. That should get rid of the warnings the > proper way. Ok, I rewrote it to use %lu for format strings. Jeremy Drake <pgsql@jdrake.com> wrote: > sizeof(DWORD) is always 4, even on 64-bit windows. sizeof(long) is also > always 4. I got it. This change will work on 64-bit windows, because DWORD is defined as 'unsigned long' there, too. We need to support LLP64 compliers in advance, though. Regards, --- ITAGAKI Takahiro NTT Open Source Software Center
Вложения
Applied, Thanks. wiki updated. cheers andrew ITAGAKI Takahiro wrote: > Peter Eisentraut <peter_e@gmx.net> wrote: > > >> Then try using %lu and no casts. That should get rid of the warnings the >> proper way. >> > > Ok, I rewrote it to use %lu for format strings. > > > Jeremy Drake <pgsql@jdrake.com> wrote: > >> sizeof(DWORD) is always 4, even on 64-bit windows. sizeof(long) is also >> always 4. >> > > I got it. This change will work on 64-bit windows, because DWORD is > defined as 'unsigned long' there, too. We need to support LLP64 > compliers in advance, though. > > Regards, > --- > ITAGAKI Takahiro > NTT Open Source Software Center > > > > ------------------------------------------------------------------------ > > >