我们来谈谈结构

时间:2011-10-07 07:24:05

标签: c

我知道结构是什么,但没有看到它的使用。 任何人都可以向我详细解释该代码的作用吗?

static struct option const long_options[] =
{
  {"all", no_argument, NULL, 'a'},
  {"kernel-name", no_argument, NULL, 's'},
  {"sysname", no_argument, NULL, 's'},  /* Obsolescent.  */
  {"nodename", no_argument, NULL, 'n'},
  {"kernel-release", no_argument, NULL, 'r'},
  {"release", no_argument, NULL, 'r'},  /* Obsolescent.  */
  {"kernel-version", no_argument, NULL, 'v'},
  {"machine", no_argument, NULL, 'm'},
  {"processor", no_argument, NULL, 'p'},
  {"hardware-platform", no_argument, NULL, 'i'},
  {"operating-system", no_argument, NULL, 'o'},
  {GETOPT_HELP_OPTION_DECL},
  {GETOPT_VERSION_OPTION_DECL},
  {NULL, 0, NULL, 0}
};

3 个答案:

答案 0 :(得分:5)

这是struct option元素的静态数组的初始化。这个结构将有四个元素(char*,另一个,一个指针和一个字符),这些是值。请注意,数组以NULL值结束,以防止搜索通过结束,并注意如何使用与结构相关的一些常量。

答案 1 :(得分:1)

它定义了类型为long_options的结构的静态数组(即在其他.c模块中不可见)常量数组option。像{"all", no_argument, NULL, 'a'}这样的各个行是struct option类型的元素。我觉得这里没问题。

答案 2 :(得分:1)

此代码正在创建一个struct选项数组。每行包含该数组中项目的值。

从代码中我假设struct选项就像这样

struct option
{
    const char * option_name;
    enum argument_type  argument;
    void * pointer; //not enough context
    char short_option;
};