【发布时间】:2011-03-25 13:13:09
【问题描述】:
为什么下面的程序会给出警告?
注意:很明显,向需要 const 指针的函数发送普通指针不会给出任何警告。
#include <stdio.h>
void sam(const char **p) { }
int main(int argc, char **argv)
{
sam(argv);
return 0;
}
我收到以下错误,
In function `int main(int, char **)':
passing `char **' as argument 1 of `sam(const char **)'
adds cv-quals without intervening `const'
【问题讨论】:
-
您的编译器是否报告错误或警告? (而且,如果它只是报告一个警告,那么您使用的是什么编译器?它应该报告一个错误)
-
@James:我的编译器 [gcc 版本 2.95.3] 抛出错误。将立即编辑问题。感谢您的通知。
-
@Prabhu:啊,好的。我最初认为它可能是 Visual C++ 的旧版本(我认为 Visual C++ 缺乏其标准一致性……一点也不……不……)。跨度>
-
我不是 C++ 专家,但我会注意到你的编译器已经快 10 年了。 :-)
-
我正在使用 gcc 4.1.2(2007 年 2 月 13 日发布),它给了我一个警告?
标签: c++ c pointers constants command-line-arguments