传递参数1会丢弃指针目标类型的限定符
我的主要function如下:
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且没有参数:
int main(void) { /* ... */ }
或者使用两个参数(这里称为argc和argv,尽管可以使用任何名称,因为它们是声明它们的函数的本地名称):
int main(int argc, char *argv[]) { /* ... */ }
或等效的; 9)或以其他一些实施方式定义的方式。
继续说……
…参数argc和argv以及argv数组指向的字符串应由程序修改 ,并在程序启动和程序终止之间保留它们最后存储的值。