Using GCC and C99 mode, I have a function declared as:
void func(float *X);
When I call the function, I use a volatile array Y:
volatile float Y[2];
int main()
{
func(Y);
return 0;
}
When compiling (with -Wall
), I get the following warning:
warning: passing argument 1 of ‘func’ discards qualifiers from pointer target type
blah.c:4: note: expected ‘float *’ but argument is of type ‘volatile float *’
I can eliminate it with an explicit (float *)
type cast, but this repeats in many places in the code.
Is there a way to eliminate this specific warning, with an option or a pragma (or something equivalent)?
No, you can't turn that warning off. It's telling you you're violating the type system. If you want to call func
you either need to pass it pointers to non-volatile data or change the function signature to accept pointers to volatile data.