我正在阅读aircrack-ng源代码并注意到struct的许多不同用法。 例如:
struct option {...} opt;
typedef struct {...}投票;
我认为struct的一般格式是
struct var {...};
或
typedef struct var {...} foo;
opt
的目的是什么,vote
如何定义类型?
答案 0 :(得分:4)
typedef
创建一个类型别名。用:
typedef struct { /* ... */ } vote;
我们创建一个匿名结构,vote
是别名。
struct option { /* ... */ } opt;
它声明了struct option
类型,以及opt
类型的变量struct option
。
答案 1 :(得分:2)
在C中,您创建变量的方式是:
<type> <variable-name>;
这很明显,例如:
int foo;
虽然不太明显,但与
完全相同struct option {...} opt;
类型为struct option {...}
,
变量名称为opt
。
因此,这一行只创建一个名为opt
的变量,它是一个结构,描述了所有成员。
在该行之后,您还描述了结构option
,因此您可以重新使用该名称,而无需重新描述结构的成员:
{
/* make structure, and variable opt */
struct option { int alpha; int beta; } opt;
/* Use the structure previously defined */
struct option second_opt;
}
答案 2 :(得分:0)
类型定义为struct
名称提供别名,尤其是当struct
名称很长并且您想将其重命名为更短的名称时。
说你有
struct very_large_screen_metrics_info{};
您可以稍后将其重命名为:
typedef struct very_large_screen_metrics_info screen_info;
struct
定义中发生的事情是类型定义随结构定义一起提供。因此,示例中的命名约定是完全有效的,并且是常规命名约定的替代方法。这些类型与您预期的opt
和vote