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
Attachments:
mingw-warnings.patchapplication/octet-stream; name=mingw-warnings.patchDownload+5-7
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
Attachments:
mingw-warnings.patchapplication/octet-stream; name=mingw-warnings.patchDownload+16-19
Applied, Thanks.
wiki updated.
cheers
andrew
ITAGAKI Takahiro wrote:
Show quoted text
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------------------------------------------------------------------------