const char 转换错误

发布于 2024-09-06 13:51:12 字数 333 浏览 7 评论 0原文

我在使用 gcc 时遇到以下错误。

invalid conversion from ‘char**’ to ‘const char**’

有了这个代码。

void foo( const int &argc, const char **argv );

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

这是为什么呢?

I am getting the following error with gcc.

invalid conversion from ‘char**’ to ‘const char**’

With this code.

void foo( const int &argc, const char **argv );

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

Why is this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俯瞰星空 2024-09-13 13:51:12

当在函数参数列表中使用时,char *argv[] 声明等同于 char **argv 声明。因此,当您将 argv 传递给 foo 时,您实际上是在尝试将 argvchar ** 转换类型为 const char ** 类型。这是非法的。阅读常见问题解答 http://www.parashift.com /c++-faq-lite/const- Correctness.html#faq-18.17 为什么它是非法的。

When used in function parameter list, char *argv[] declaration is equivalent to char **argv declaration. For this reason, when you are passing argv to foo you are actually attempting to convert argv from char ** type to const char ** type. This is illegal. Read the FAQ http://www.parashift.com/c++-faq-lite/const-correctness.html#faq-18.17 for why it is illegal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文