为什么使用 getopt_long 时结构选项数组需要额外的虚拟条目
例如选项数组是:
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0}
};
Is it for padding?
For example the option array is:
static struct option const long_options[] =
{
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'v'},
{0, 0, 0, 0}
};
Is it for padding?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
查看
getopt_long()
的手册页:argc 和 argv 对显示了一种表示数组中有多少条目的方法(通过显式计数,尽管因为 argv[argc] == 0< /code>,那里还有一个哨兵)。
optstring
表示短参数;longindex
是一个输出参数。只剩下指针longopts
,这意味着该函数必须能够在没有任何支持计数的情况下判断数组中有多少条目(没有longoptcount
参数),所以数组的末尾由所有值零标记 - 哨兵值。Look at the man page for
getopt_long()
:The
argc
andargv
pair show one way to say how many entries there are in an array (by explicit count, though sinceargv[argc] == 0
, there is also a sentinel there). Theoptstring
indicates short arguments; thelongindex
is an output parameter. That leaves only the pointerlongopts
which means that the function must be able to tell how many entries are in the array without any supporting count (there is nolongoptcount
argument), so the end of the array is marked by all values zero - a sentinel value.它是一个“哨兵”,因此处理数组的代码知道它何时到达末尾。
It's a 'sentinel' so the code processing the array knows when it's gotten to the end.