Suppress compiler warnings on mingw

Started by ITAGAKI Takahiroover 18 years ago7 messagespatches
Jump to latest
#1ITAGAKI Takahiro
itagaki.takahiro@oss.ntt.co.jp

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
#2Peter Eisentraut
peter_e@gmx.net
In reply to: ITAGAKI Takahiro (#1)
Re: Suppress compiler warnings on mingw

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.

#3ITAGAKI Takahiro
itagaki.takahiro@oss.ntt.co.jp
In reply to: Peter Eisentraut (#2)
Re: Suppress compiler warnings on mingw

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

#4Jeremy Drake
pgsql@jdrake.com
In reply to: ITAGAKI Takahiro (#3)
Re: Suppress compiler warnings on mingw

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

#5Peter Eisentraut
peter_e@gmx.net
In reply to: ITAGAKI Takahiro (#3)
Re: Suppress compiler warnings on mingw

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.

#6ITAGAKI Takahiro
itagaki.takahiro@oss.ntt.co.jp
In reply to: Peter Eisentraut (#5)
Re: Suppress compiler warnings on mingw

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
#7Andrew Dunstan
andrew@dunslane.net
In reply to: ITAGAKI Takahiro (#6)
Re: Suppress compiler warnings on mingw

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

------------------------------------------------------------------------