gpt4 book ai didi

c - 在 C 中调用函数时如何将参数 “const” 更改为 “non-const”

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

当函数被其他函数调用时,我遇到了问题。

我的函数是这样的:

void *table_lookup(const table *t) {
...
//Here I want to call my other function.
table_remove(t);
...
}

void table_remove(table *t) {
...
}

我在编译的时候收到了一个警告。问题是我无法更改参数的类型。

最佳答案

您不能丢弃 const 限定词。此后任何试图修改限定 const 的值都会调用未定义的行为。参见 C11 Standard - 6.7.3 Type qualifiers(p6) .

table_lookup 参数是 const 是有原因的。它允许编译器优化 t 的使用。如果您放弃 const 并尝试修改 t,那么您就违反了对编译器的 promise ,即 t 不会被修改。

相反,您应该重构您的代码,以便 remove() 函数在其中调用 table_lookup 以获得(大概)指向您希望删除的节点的指针。然后删除节点。不要尝试在 table_lookup 中添加 remove()。创建一个新函数。

关于c - 在 C 中调用函数时如何将参数 “const” 更改为 “non-const”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55083437/

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