我遇到了困难的struct初始化。
static struct option long_options[] =
{
/* These options set a flag. */
{"res", required_argument, NULL, 'r'},
{0, 0, 0, 0},
};
有人可以解释结构初始化吗? 我只知道Structs:
struct point {
int x;
int y;
};
请有人解释。
答案 0 :(得分:4)
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。
long_options
struct options
数组的第一个元素的元素设置为"res"
,required_argument
,NULL
和'r'
,分别。
从初始化开始,可以推断出struct option
的元素是
const char *
required_argument
的类型。它可能是int
或enum
,也可能是bool
int
(如果这是C)或char
(如果这是C ++)答案 1 :(得分:4)
struct
可以包含任何数量和类型的变量,甚至包括其他struct
和结构指针。
另请注意,您的代码不会显示任何结构声明。该结构的声明存在于其他地方。这是static
类型为long_options
的{{1}}数组变量的定义(和初始化)。
看到定义,我们可以猜测,您的struct option
定义可能看起来像
struct
答案 2 :(得分:3)
这不是一个结构声明。这是类型为struct option
的静态结构数组的定义。
您需要在程序的其他位置找到struct option
的声明。