无法理解结构初始化
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 options
的 long_options
数组的第一个元素的元素设置为 "res"
、required_argument
、NULL
和 'r'
, 分别。
从初始化可以推导出struct option
的元素是
- 一个
const char *
- 无论
required_argument
是什么类型。它可能是 int
或 enum
,甚至可能是 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;
};
我遇到了困难的结构初始化。
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 options
的 long_options
数组的第一个元素的元素设置为 "res"
、required_argument
、NULL
和 'r'
, 分别。
从初始化可以推导出struct option
的元素是
- 一个
const char *
- 无论
required_argument
是什么类型。它可能是int
或enum
,甚至可能是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;
};