使用GCC和C99模式,我声明了一个函数:
void func(float *X);
当我调用这个函数时,我使用了一个易失性数组Y:
volatile float Y[2];
int main()
{
func(Y);
return 0;
}
在编译时(使用-Wall
),我收到以下警告:
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 *’
我可以使用显式的(float *)
类型转换来消除它,但这在代码中的许多地方都会重复出现。
有没有一种方法可以通过选项或编译指示(或等效物)消除此特定警告?
volatile
限定符是优化器的信号。所以我想知道为什么它被认为是违反类型系统的?! - ysapconst int*
传递给函数func(int*)
与类型系统不符,同样的道理。 - Jonathan Wakelyvolatile
,就像const
一样,是类型的一部分。 - rubenvb