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

2024-04-24

我正在尝试将参数传递给函数,并指示应考虑该参数const通过接收函数。

据我了解,以下代码示例显示了确保test函数可以通过以下方式调用argv变量,未声明为 const。

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通过接收函数?


The C FAQ http://c-faq.com/ansi/constmismatch.html解释了为什么在 C 中将指针转换为非指针时有安全措施constto const。在你的情况是双重的const我认为,合格的目标指针不会发生那里描述的问题。因此,C++ 有一个宽松的规则,允许您要求的隐式转换。不幸的是,对于 C,标准委员会发现 C++ 的规则太复杂,因此您必须将指针转换为预期类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐