const char 转换错误
我在使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当在函数参数列表中使用时,
char *argv[]
声明等同于char **argv
声明。因此,当您将argv
传递给foo
时,您实际上是在尝试将argv
从char **
转换类型为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 tochar **argv
declaration. For this reason, when you are passingargv
tofoo
you are actually attempting to convertargv
fromchar **
type toconst 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.