是否可以在有参数和无参数的情况下运行C函数?

时间:2019-11-05 14:26:58

标签: c

可以不使用参数吗? 我正在尝试像这样运行该功能:

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();```

2 个答案:

答案 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>中的stdinstdout