gpt4 book ai didi

函数调用可以丢弃其参数的 cons 限定符吗?

转载 作者:太空宇宙 更新时间:2023-11-04 05:51:18 26 4
gpt4 key购买 nike

以下代码在 Green Hills C 编译器中导致错误(错误:type int * is incompatible with argument type const int*),而它仅产生警告并使用 gcc 编译(警告:传递参数 1 of 'func'从指针目标类型中丢弃“const”限定符)。

void func1(int* a)
{
(*a)++;
}

const int g = 100;

void func2(void)
{
func1(&g);
}

哪种行为符合 C 标准?

最佳答案

func1(&g) 的调用无效。这是 C 语言中的约束违规,即日常术语中通常所说的“错误”。 C 语言不支持将const int * 值隐式转换为int * 类型。

它在 GCC 中“只是一个警告”这一事实并不意味着什么。在 GCC 中使用 -pedantic-errors 开关,使其将约束违规报告为“错误”。正如您自己观察到的,Green Hills C 编译器将它报告为“错误”,而无需您提供任何帮助。

关于函数调用可以丢弃其参数的 cons 限定符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191549/

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