我有一个函数,其原型如下:
void foo(const char * data);
在我的代码的其他地方,我声明了一个全局变量,如下所示
volatile char var[100];
每当我尝试这样做时:
foo(var);
编译器会抛出以下错误消息:
“volatile char *”类型的参数与“const char *”类型的参数不兼容
为什么会这样?据我了解,函数中的变量不允许更改指针或其内容。我知道因为我的全局变量是易失性的,所以它可能随时发生变化,但由于拥有易失性 const 变量是完全合法的,所以我不明白为什么会收到此编译器错误。
Thanks
--Amr
这是因为隐式转换可以add指针类型目标的限定符,但不删除它们。所以如果你希望你的函数能够接受volatile
and/or const
限定指针,您必须同时声明它:
void foo(const volatile char * data);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)