例如选项数组是:
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0}
};
是为了铺垫吗?
例如选项数组是:
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0}
};
是为了铺垫吗?
它是一个“哨兵”,因此处理数组的代码知道它何时结束。
查看手册页getopt_long()
:
int getopt_long(int argc, char * const *argv, const char *optstring, const struct option *longopts, int *longindex);
argc
andargv
对显示了一种表示数组中有多少条目的方法(通过显式计数,尽管因为,argv[argc] == 0
那里也有一个哨兵)。表示短optstring
参数;这longindex
是一个输出参数。这只留下了指针longopts
,这意味着函数必须能够在没有任何支持计数的情况下判断数组中有多少条目(没有longoptcount
参数),因此数组的末尾由所有值标记为零 - 一个哨兵值。