Thread: 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
Attachment
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
Attachment
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 > > > > ------------------------------------------------------------------------ > > >