[flac-dev] GCC/clang compilation issues

Oliver Stöneberg oliverst at online.de
Sat Dec 6 13:19:39 PST 2014


> Oliver Stöneberg wrote:
> 
> > I finally got around to trying to update FLAC for the MAME/MESS 
> > project again. There were several issues I was able to fix and will 
> > submit patches later, but I hit one roadblock with GCC and clang:
> > 
> > src/lib/libflac/libFLAC/stream_encoder.c:1696:43: error: cast from function call
> >       of type 'double' to non-matching type 'FLAC__int32' (aka 'int')
> >       [-Werror,-Wbad-function-cast]
> >   ...FLAC__int32 tukey_parts = (FLAC__int32)strtod(specification+14, 0);
> >                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > src/lib/libflac/libFLAC/stream_encoder.c:1717:43: error: cast from function call
> >       of type 'double' to non-matching type 'FLAC__int32' (aka 'int')
> >       [-Werror,-Wbad-function-cast]
> >   ...FLAC__int32 tukey_parts = (FLAC__int32)strtod(specification+15, 0);
> >                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 2 errors generated.
> 
> What build system are you using and what versions of GCC and Clang?
> What OS?

clang 3.5 on ubuntu 14.04 and GCC (MinGW-w64) 4.9.1 on Windows 7.
 
> > Apparently you are supposed to round() or floor() instead of just 
> > casting a double to an integer.
> 
> Sorry, thats not correct, strtod() returns double and the type signatures
> of round and floor are as follows:
> 
>        double round(double x);
>        double floor(double x);
> 
> so you have to cast anyway.

Alright...stupid me. I just don't use mathematical functions very 
often...


More information about the flac-dev mailing list