[flac-dev] Are pointers to FLAC__int32 and int interchangeable?

Erik de Castro Lopo mle+la at mega-nerd.com
Wed Oct 7 14:06:08 PDT 2015

lvqcl wrote:

> Is it Ok to pass FLAC__int32* in a function that expects int* ?

Well FLAC__int32 is just a 32 bit integer and on all the platforms/
architecures/compilers that FLAC supports FLAC__int32 and int are
the same.

As for pointers, all pointers are the same until you try an increment
them. If you have some type, lets call it sometype_t, and a pointer to
types of sometype_t :

       sometype_t * ptr = 0 ;

and you then increment it using
       ptr ++ ;

The next address that the pointer points to is calculated using:

       ptr = (sometype_t *) ((char*) ptr) + 1) ;

where incrementing a char* pointer increases the address by 1.

> (the same question for FLAC__uint32* and unsigned*)

Very similar.

Personally I think the FLAC__xxxx stuff should go, to be replaced with
C standard int32_t, uint32_t, int16_t etc, at least for internal code.
I am slowly doing that when I touch code.

I don't think this should be done at the API level without an API
version bump and I don't think that is currently worth it.

Erik de Castro Lopo

More information about the flac-dev mailing list