gpt4 book ai didi

c - 类型 "volatile char *"的参数与类型 "const char *"的参数不兼容

转载 作者:太空狗 更新时间:2023-10-29 14:50:48 26 4
gpt4 key购买 nike

我有一个函数,其原型(prototype)如下:

void foo(const char * data);

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

volatile char var[100];

每当我尝试这样做时:

foo(var);

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

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

为什么会这样?据我了解,我的函数中的变量不允许更改指针或其内容。我知道因为我的全局变量是 volatile 的,它可能随时发生变化,但鉴于拥有 volatile 常量变量是完全合法的,我不明白为什么我会收到此编译器错误。

谢谢

--阿姆

最佳答案

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

void foo(const volatile char * data);

关于c - 类型 "volatile char *"的参数与类型 "const char *"的参数不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3457677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com