gpt4 book ai didi

c - 危险的指针转换导致失去 const 资格

转载 作者:太空宇宙 更新时间:2023-11-04 03:30:39 27 4
gpt4 key购买 nike

根据 ISO C 标准 (6.3.16.1),如果“两个操作数都是指向兼容类型的合格或非合格版本的指针,并且左边指向的类型具有所有右边指向的类型的限定符”。我在我的静态分析工具中收到了警告,但我不确定是否存在真正的问题。因为正如您在下面的代码中看到的那样,该指针将传递给其原型(prototype)中具有“const”限定符的函数

int main()
{
static volatile const signed int batu[5] = {1,2,3,4,5};
unsigned int x = 5;
func(x, (signed int *) batu);
}

signed int func(unsigned int p1, volatile const signed int *p2)
{
return 0;
}

最佳答案

您只需要删除函数调用中的 (signed int *) 强制转换。变量 batu 和函数预期的参数 p2 属于同一类型(见下文),包括限定符,因此您根本不需要强制转换。

数组类型总是自动转换为其等效的指针类型,除非它是 sizeof 或一元 & 运算符的输入。来自 C 标准 6.3.2.1/3。

关于c - 危险的指针转换导致失去 const 资格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36892583/

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