我正在阅读aircrack源代码,并注意到了结构的许多不同用途。例如:
结构选项{.} opt; 结构{.}投票;
我认为结构的一般格式是
结构{.};
或
结构{.} foo;
opt的目的是什么,为什么vote没有定义类型?
发布于 2013-01-07 18:21:50
typedef创建类型别名。通过以下方式:
typedef struct { /* ... */ } vote;我们创建一个匿名结构,其中vote是别名。
struct option { /* ... */ } opt;它声明类型为struct option,并声明类型为struct option的变量opt。
发布于 2013-01-07 18:21:08
在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;
}发布于 2013-01-07 18:25:14
类型定义为struct名称提供了一个别名,特别是当struct有一个很长的名称,并且您希望将它重命名为更短的名称时。
说你有
struct very_large_screen_metrics_info{};稍后您可以将它重命名为:
typedef struct very_large_screen_metrics_info screen_info;在struct定义中发生的事情是,类型定义与结构定义一起提供。因此,示例中的命名约定是完全有效的,并且是常规命名约定的替代。这些类型与您可能预期的一样,opt和vote
https://stackoverflow.com/questions/14201645
复制相似问题