Thread: Suppress compiler warnings on mingw

Suppress compiler warnings on mingw

From
ITAGAKI Takahiro
Date:
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

Re: Suppress compiler warnings on mingw

From
Peter Eisentraut
Date:
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.

Re: Suppress compiler warnings on mingw

From
ITAGAKI Takahiro
Date:
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



Re: Suppress compiler warnings on mingw

From
Jeremy Drake
Date:
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

Re: Suppress compiler warnings on mingw

From
Peter Eisentraut
Date:
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.

Re: Suppress compiler warnings on mingw

From
ITAGAKI Takahiro
Date:
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

Re: Suppress compiler warnings on mingw

From
Andrew Dunstan
Date:

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
>
>
>
> ------------------------------------------------------------------------
>
>
>