为什么使用 getopt_long 时结构选项数组需要额外的虚拟条目

发布于 2024-10-08 04:22:19 字数 202 浏览 10 评论 0原文

例如选项数组是:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

故事灯 2024-10-15 04:22:19

查看 getopt_long() 的手册页:

<前><代码>int
getopt_long(int argc, char * const *argv, const char *optstring,
const struct 选项 *longopts, int *longindex);

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

Look at the man page for getopt_long():

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

The argc and argv pair show one way to say how many entries there are in an array (by explicit count, though since argv[argc] == 0, there is also a sentinel there). The optstring indicates short arguments; the longindex is an output parameter. That leaves only the pointer longopts which means that the function must be able to tell how many entries are in the array without any supporting count (there is no longoptcount argument), so the end of the array is marked by all values zero - a sentinel value.

千仐 2024-10-15 04:22:19

它是一个“哨兵”,因此处理数组的代码知道它何时到达末尾。

It's a 'sentinel' so the code processing the array knows when it's gotten to the end.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文