无法理解结构初始化

Could not understand Struct initialization

我遇到了困难的结构初始化。

    static struct option long_options[] =
    {
            /* These options set a flag. */
            {"res",    required_argument, NULL, 'r'},
            {0, 0, 0, 0},
    };

谁能解释一下结构初始化? 我只知道这样的结构:

struct point {
   int    x;
   int    y;
};

请有人解释。

C 和 C++ 是不同的语言。以上一些的含义取决于所考虑的语言是C还是C++。

该程序必须在您未向我们展示的部分代码中包含 struct option 声明。声明:

static struct option long_options[] =
    {
            /* These options set a flag. */
            {"res",    required_argument, NULL, 'r'},
            {0, 0, 0, 0},
    };

设置一组此类选项。据推测,{0, 0, 0, 0} 标记选项数组的结尾。它被称为 sentinel value.

struct optionslong_options 数组的第一个元素的元素设置为 "res"required_argumentNULL'r', 分别。

从初始化可以推导出struct option的元素是

  • 一个const char *
  • 无论 required_argument 是什么类型。它可能是 intenum,甚至可能是 bool
  • 某种指针
  • 一个int(如果这是C)或char(如果这是C++)

这不是结构 declaration.This 是 静态结构数组 类型 struct option 的定义。

您需要在程序的其他地方找到 struct option 声明

A struct 可以有任意数量和类型的变量,甚至是其他 struct 和结构指针。

另请记住,您的代码未显示任何结构声明。结构的声明出现在别处。这是 static 数组变量 long_options 类型 struct option.

的定义(和初始化)

看到定义,我们可以猜测,你的struct定义可能看起来像

struct option{

  char * a;
  <type of required_argument> b;
  void * c;
  char d;
};