5

例如选项数组是:

static struct option const long_options[] =
{
  {"help", no_argument, 0, 'h'},
  {"version", no_argument, 0, 'v'},
  {0, 0, 0, 0}
};

是为了铺垫吗?

4

2 回答 2

3

它是一个“哨兵”,因此处理数组的代码知道它何时结束。

于 2010-12-16T20:30:20.730 回答
3

查看手册页getopt_long()

int
 getopt_long(int argc, char * const *argv, const char *optstring,
     const struct option *longopts, int *longindex);

argcandargv对显示了一种表示数组中有多少条目的方法(通过显式计数,尽管因为,argv[argc] == 0那里也有一个哨兵)。表示短optstring参数;这longindex是一个输出参数。这只留下了指针longopts,这意味着函数必须能够在没有任何支持计数的情况下判断数组中有多少条目(没有longoptcount参数),因此数组的末尾由所有值标记为零 - 一个哨兵值。

于 2010-12-16T21:04:13.840 回答