在C函数中使用未使用的参数可以吗?

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

void encoder();
void encoder(int argc,FILE* inputFP,FILE* outputFP);

是否需要secound函数,一个用于处理stdio,另一个用于处理文件?当我尝试跑步 void encoder(int argc,FILE* outputFP);没有任何参数,我会收到错误消息:

error: too few arguments to function ‘void encoder(int,FILE*,FILE*)’
         encoder();```
szj0128 回答:在C函数中使用未使用的参数可以吗?

  

在C函数中使用未使用的参数可以吗?

是的

还是,为什么不让encoder()取两个FILE*而不是名称,然后再做(伪代码):

main(argc,argv)
  FILE * fp_in,* fp_out

  if argc == 2
    fp_in = open argv[1],"r"
  else
    f = stdin

  if argc == 3
    fp_out = open argv[3],"w"
  else
    fp_out = stdout

  encoder fp_in,fp_out
,

要回答标题中的一般性问题-是的,可以使用所有传递给函数的参数,尽管这样可能会使以后的维护者感到困惑。

对于这种特定情况,建议不要对输入和输出文件使用特殊名称,以表示标准流,而不是传递参数计数。在* nix命令行实用程序中,使用"-"来指定从标准输入中读取内容是一个常见约定:

xmllint --format some_ugly_wad_of_xml | vi -

上面的命令漂亮地打印了一些XML,然后将漂亮打印的版本传递给vi进行编辑(这是我最近要做的很多事情)。因此,与其传递argc,不如传递文件名并检查它们以确定执行的操作:

if ( !strcmp( inputFile,"-" ) )
  inputStream = stdin;
else
  inputStream = fopen( inputFile,"r" );

这样,您就不会留下任何“未使用”的参数。

,

最好打开文件并读取所有内容并获取变量。因此,您可以释放(关闭)文件并跳舞。关闭文件后,随意创建东西。

本文链接:https://www.f2er.com/3166079.html

大家都在问