传递参数1将放弃指针目标类型的限定符



我的主要功能如下:

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

作为参考,huffencchar*输入,执行函数,通过./huffenc senselessness

采样输入"无意义"。

这个警告是什么意思?

这意味着你将一个const参数传递给一个接受非const参数的函数,这可能是不好的,原因很明显。

huffenc可能不需要非const参数,所以它应该使用const char*。但是,您对main的定义是非标准的。

C99标准第5.1.2.2.1节(程序启动)规定:

程序启动时调用的函数命名为main。实现声明no这个函数的原型。它应该定义为返回类型int和no参数:

int main(void) { /* ... */ }

或带两个形参(这里称为argc和argv,尽管可以使用任何名称)使用时,因为它们是声明它们的函数的局部):

int main(int argc, char *argv[]) { /* ... */ }

或等价的;9)或以其他实现定义的方式。

接着说……

…参数argc和argv,以及argv数组所指向的字符串可以被程序修改,并在程序之间保留它们最后存储的值启动和程序终止。

相关内容

  • 没有找到相关文章

最新更新