The compilers yells at me on line 233 of libFLAC/lpc.c

*(residual++) = *(data++) - (sum >> lp_quantization);
--> data is const and cannot be modified

Funny thing is, if data is declared:
  const FLAC__int32 *data
instead of
  const FLAC__int32 data[]

everything is ok.

Is this a bug in my compiler, or a personnal lack of understanding of
the difference in C between *data and data[] ?



I'm not a great language lawyer, but I don't think you can modify the pointer when something is declared int foo[]. You can modify the data pointed to, with foo[0] = 42, etc. but you can't do stuff like foo++ or foo = (int*)something. The same error would show up with FLAC__int32 * const data. If you want to change the pointer, you need to declare it as a pointer with int *foo (or const int *foo, which means you can modify the pointer, but not the data it points to).


My 2 cents. I'll go back to lurking now. :-)

Christian



-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
Flac-dev mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/flac-dev

Reply via email to