可以不使用参数吗? 我正在尝试像这样运行该功能:
void encoder();
void encoder(int argc, FILE* inputFP, FILE* outputFP);
是否需要第二个功能,一个用于处理stdio,一个用于处理文件?当我尝试跑步
void encoder(int argc, FILE* inputFP, FILE* outputFP);
没有任何参数,我会收到错误消息:
error: too few arguments to function ‘void encoder(int, FILE*, FILE*)’
encoder();```
答案 0 :(得分:1)
可以不使用参数吗?
否,所有参数都必须存在且正确。
您还应该注意不要在给定的应用程序中为函数(或任何符号)提供不同的原型。
如果您真的想不带任何参数调用它,那么最好的方法是拥有两个函数并调用您所追求的一个函数:
void encoder(void) {
encoder2(0, stdin, stdout);
}
void encoder2(int argc, FILE* inputFP, FILE* outputFP) {
/* ... */
}
如果您要使用可变数量的参数,则可以考虑使用stdarg.h
中的宏(例如printf()
和朋友),尽管您仍然无法摆脱困境带有 zero 参数,那么您需要非常小心地使用它。
答案 1 :(得分:1)
正如您所发现的,不,这是无效的。
C缺少对默认值的支持,因此参数将毫无用处。解决此特定问题的方法是使用魔法FILE *
“文件”映射到标准输入/输出通道,即<stdio.h>
中的stdin
和stdout
。