[flac-dev] [Flac-dev] Git branch with compiling fixes for win32

JonY
Wed, 01 Feb 2012 14:36:02 -0000

On 2/1/2012 18:52, Erik de Castro Lopo wrote:
> JonY wrote:
>
>> Alright, here's a quick fix, although it is more ugly than I
remembered.
>>
>> Basically, it removes those _MSC_VER ifdefs, and relies on inttypes.h
>> where available, and falls back to I64 on MSVC and then ll for others,
>> all format warnings suppressed.
>
> JonY,
>
> Sorry for the delay on actually getting on to this.
>
> I tried your patch, but it wasn't quite right. The problem is that %ll
> is the correct format specifier for uint64_t on 32bit Linux but not
> on 64 bit Linux.
>

Something is very very wrong about the above statements. I thought I
used PRI?64 when inttypes.h is found (Linux should have it, old code
uses %ll? anyway for non-msvc, so shouldn't have any new issues).

inttypes.h and stdint.h is supposed to be abstractions to remove these
issues.

> In C99, the correct way to print a uint64_t value is:
>
>      printf ("THe value is : " PRIu64 "\n", value) ;
>
> I have gone ahead and fixed this through the code and fixed this, but I
> may have broken some either MSVC or MinGW on the way. I'd appreciate it
> if you test whats in git now.
>
> For those files where any compiler baulks at the PRIu64/PRIx64/PRId64,
> you should add a #ifdef block that might look something like:
>
>     #ifdef HAVE_INTTYPES_H
>     #include <inttypes.h>
>     #else
>     #if defined (_MSC_VER) && ! defined (PRId64)
>     #define PRId64 "I64d"
>     #endif
>     #if defined (_MSC_VER) && ! defined (PRIu64)
>     #define PRIu64 "I64u"
>     #endif
>     #endif
>
> We'll worry about compilers that don't have the PRI_64 values as we
find
> them.
>

OK, I'll do a quick test build tomorrow. More thorough testing will come
during the weekends.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 196 bytes
Desc: OpenPGP digital signature