加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

“volatile char *”类型的参数与“const char *”类型的参数不

发布时间:2020-12-15 05:16:44 所属栏目:Java 来源:网络整理
导读:我有一个函数,其原型如下: void foo(const char * data); 在我的代码的其他地方,我有一个声明如下的全局变量 volatile char var[100]; 每当我尝试这样做: foo(var); 编译器抛出以下错误消息: “volatile char *”类型的参数与“const char *”类型的参数
我有一个函数,其原型如下:

void foo(const char * data);

在我的代码的其他地方,我有一个声明如下的全局变量

volatile char var[100];

每当我尝试这样做:

foo(var);

编译器抛出以下错误消息:

“volatile char *”类型的参数与“const char *”类型的参数不兼容

为什么会这样?据我了解,我的函数中的变量不允许更改指针或其内容.我理解,因为我的全局变量是易变的,它可能随时发生变化,但是看到拥有一个易变的const变量是完全合法的,我不明白为什么我得到这个编译错误.

谢谢

–Amr

解决方法

这是因为隐式转换可以向指针类型的目标添加限定符,但不能删除它们.因此,如果您希望函数能够接受volatile和/或const限定指针,则必须使用以下两者来声明它:

void foo(const volatile char * data);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读