C 结构澄清
在阅读aircrack ng源代码时,我注意到struct有许多不同的用法。 例如: 结构选项{…}opt typedef结构{…}投票 我认为struct的一般格式是 结构变量{…} 或 typedef结构变量{…}fooC 结构澄清,c,struct,C,Struct,在阅读aircrack ng源代码时,我注意到struct有许多不同的用法。 例如: 结构选项{…}opt typedef结构{…}投票 我认为struct的一般格式是 结构变量{…} 或 typedef结构变量{…}foo opt的用途是什么?为什么vote没有定义类型?在C中,创建变量的方式是: <type> <variable-name>; 虽然不太明显,但这与 struct option {...} opt; 类型为struct option{…}, 变量名
opt
的用途是什么?为什么vote
没有定义类型?在C中,创建变量的方式是:
<type> <variable-name>;
虽然不太明显,但这与
struct option {...} opt;
类型为struct option{…}
,
变量名为opt
所以这一行只创建了一个名为opt
的变量,它是一个结构,包含所有描述的成员
在该行之后,您还描述了结构选项
,因此您可以再次重用该名称,而无需重新描述结构的成员:
{
/* make structure, and variable opt */
struct option { int alpha; int beta; } opt;
/* Use the structure previously defined */
struct option second_opt;
}
typedef
创建类型别名。与:
typedef struct { /* ... */ } vote;
我们创建了一个匿名结构,vote
是一个别名
struct option { /* ... */ } opt;
它声明了类型
struct option
,类型struct option的变量opt
类型定义为struct
名称提供了别名,特别是当struct
具有很长的名称并且您希望将其重命名为较短的名称时
说你有
struct very_large_screen_metrics_info{};
以后可以将其重命名为:
typedef struct very_large_screen_metrics_info screen_info;
struct
定义中出现的情况是,类型定义与结构定义一起提供。因此,示例中的命名约定是完全有效的,并且是常规命名约定的替代方案。类型与您可能期望的opt
和vote
一样,以澄清:您是否可以重新使用该结构并仅按名称引用它(option
),而不是重复其成员?
typedef struct very_large_screen_metrics_info screen_info;