gpt4 book ai didi

c - 将非常量参数传递给需要 const 参数的函数时发出警告。有没有更好的办法?

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

我正在尝试将参数传递给函数,并指示接收函数应将参数视为 const

据我了解,以下代码示例显示了确保可以使用未声明为 const 的 argv 变量调用 test 函数的唯一方法.

void test(const char * const *arr);

int main(int argc, char *argv[], char *env[])
{
test(argv);
}

void test(const char * const *arr)
{
}

但是,gcc 会给我如下警告:

E:\Projects\test>gcc -o test test.c
test.c: In function 'main':
test.c:5:2: warning: passing argument 1 of 'test' from incompatible pointer type
[enabled by default]
test.c:1:6: note: expected 'const char * const*' but argument is of type 'char **'

这让我相信我在这里所做的事情在某种程度上是错误的。有没有更好的方法将参数传递给函数,并指示接收函数应将其视为 const

最佳答案

C FAQ解释了为什么在将指向非 const 的指针转换为 const 时,在 C 语言中存在安全防护。我认为,在您使用双重 const 限定目标指针的情况下,不会发生所描述的问题。所以 C++ 有一个宽松的规则,允许您要求的隐式转换。不幸的是,对于 C,标准委员会发现来自 C++ 的规则过于复杂,因此您必须将指针转换为预期的类型。

关于c - 将非常量参数传递给需要 const 参数的函数时发出警告。有没有更好的办法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12992407/

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