我的主要功能如下:
int main(int argc, char const *argv[])
{
huffenc(argv[1]);
return 0;
}
编译器返回警告:
huffenc.c:76: warning: passing argument 1 of ‘huffenc’ discards qualifiers from pointer target type
以供参考, huffenc
需要一个 char*
输入,并执行该功能,样本输入“无意识”通过 ./huffenc senselessness
这警告意味着什么?
这意味着你正在通过 const
对非函数的参数const
论证,由于显而易见的原因,这可能是坏事。
huffenc
可能不需要非const
论证,所以它应该采取 const char*
。但是,你的定义 main
是非标准的。
C99标准第5.1.2.2.1节(程序启动)规定:
程序启动时调用的函数名为main。实施宣布否
这个功能的原型。它应该定义为返回类型int和no
参数:
int main(void) { /* ... */ }
或者有两个参数(这里称为argc和argv,但任何名称都可以
使用,因为它们是声明它们的函数的本地):
int main(int argc, char *argv[]) { /* ... */ }
或等效的; 9)或以其他一些实施方式定义的方式。
继续说......
...参数argc和argv以及argv数组指向的字符串 应
由程序修改,并在程序之间保留它们最后存储的值
启动和程序终止。