在纯C中,如何将可变数量的参数传递给函数?

fms*_*msf 1 c function

如何将C,而不是c ++,变量参数传递(并访问)到函数中?

void foo(char* mandatory_param, char* optional_param, char* optional_param2...)
Run Code Online (Sandbox Code Playgroud)

谢谢

/ fmsf

alt*_*ive 12

使用 stdarg.h

您需要使用va_list,然后使用宏va_start,va_argva_end.

有关更多信息,请参阅http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.10.html

  • 哦,我的,有一种方法让程序员使用varargs犯错!它们必须是可怕的! (6认同)
  • 如果你打算投票,至少要在评论中说出原因,而不是让我想知道为什么我的回答在某种程度上可能是错误的. (3认同)

zmb*_*ush 9

这听起来像你在寻找varargs.

#include <stdarg.h>
void foo(const char *fmt, ...)
{
  va_list argp;
  va_start(argp, fmt);
  int i = va_arg(argp, int);
  // Do stuff...
  va_end(argp);
}
Run Code Online (Sandbox Code Playgroud)


Gau*_*mar 7

阅读C中的变量参数

  • 提供有用的,直接相关的链接不应被视为进行投票的理由. (9认同)
  • +1使用链接.为什么复制已有的东西?为什么要总结一下已经很简单的内容? (3认同)