[flac-dev] GCC/clang compilation issues

Erik de Castro Lopo mle+la at mega-nerd.com
Sat Dec 6 11:33:30 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?

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

Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/


More information about the flac-dev mailing list