0

我正在创建一个函数,必须传递至少 2(两个)参数:myStruct 和 value,其他参数是可选的。

这是我的功能示例:

int find(struct myStruct *, void * value, ...);

这是所有可能的论点:

struct myStruct *, void * value, int (*comparable) (void *, void *), int flag

我相信我将不得不使用 va_list,但我不想将 null 传递给最后一个参数。这个有可能?

4

1 回答 1

0

使用可变参数,您至少有以下选项:

  • 最后一个参数为 NULL(或可识别为终止符的其他参数)
  • “第一个”参数是函数必须识别的参数数量。
  • 第一个参数指定,必须遵循什么(如格式字符串)

但请记住:您(程序员)必须确保您提供正确数量的参数。因此,如果您想从您的函数中创建一个接口(供其他程序员使用),请确保它是故障安全且尽可能自然的。如果是这样,fe 一个多重创建 GUI 函数,一个 gui 元素的 NULL 终止列表会在脑海中浮现。

于 2013-03-19T13:18:55.933 回答