当前位置: 技术问答>linux和unix
一段小程序,看的不是很明白。
来源: 互联网 发布时间:2016-12-20
本文导语: typedef struct iwlist_entry { const char * cmd; /* Command line shorthand */ iw_enum_handler fn; /* Subroutine */ int max_count; const char * argsname; /* Args as human readable string */ } iwlist_cmd; static const str...
typedef struct iwlist_entry {
const char * cmd; /* Command line shorthand */
iw_enum_handler fn; /* Subroutine */
int max_count;
const char * argsname; /* Args as human readable string */
} iwlist_cmd;
static const struct iwlist_entry iwlist_cmds[] = {
{ "scanning", print_scanning_info, -1, "[essid NNN] [last]" },
{ "frequency", print_freq_info, 0, NULL },
{ "channel", print_freq_info, 0, NULL },
{ "bitrate", print_bitrate_info, 0, NULL },
{ "rate", print_bitrate_info, 0, NULL },
{ "encryption", print_keys_info, 0, NULL },
{ "keys", print_keys_info, 0, NULL },
{ "power", print_pm_info, 0, NULL },
#ifndef WE_ESSENTIAL
{ "txpower", print_txpower_info, 0, NULL },
{ "retry", print_retry_info, 0, NULL },
{ "ap", print_ap_info, 0, NULL },
{ "accesspoints", print_ap_info, 0, NULL },
{ "peers", print_ap_info, 0, NULL },
{ "event", print_event_capa_info, 0, NULL },
{ "auth", print_auth_info, 0, NULL },
{ "wpakeys", print_wpakeys_info, 0, NULL },
{ "genie", print_gen_ie_info, 0, NULL },
{ "modulation", print_modul_info, 0, NULL },
#endif /* WE_ESSENTIAL */
{ NULL, NULL, 0, 0 },
};
上面的程序看的不是很明白,能帮我讲讲吗?尤其比如说{ "frequency", print_freq_info, 0, NULL },这种格式是什么意思?他是iwlist_entry结构体里面的成员吗?
const char * cmd; /* Command line shorthand */
iw_enum_handler fn; /* Subroutine */
int max_count;
const char * argsname; /* Args as human readable string */
} iwlist_cmd;
static const struct iwlist_entry iwlist_cmds[] = {
{ "scanning", print_scanning_info, -1, "[essid NNN] [last]" },
{ "frequency", print_freq_info, 0, NULL },
{ "channel", print_freq_info, 0, NULL },
{ "bitrate", print_bitrate_info, 0, NULL },
{ "rate", print_bitrate_info, 0, NULL },
{ "encryption", print_keys_info, 0, NULL },
{ "keys", print_keys_info, 0, NULL },
{ "power", print_pm_info, 0, NULL },
#ifndef WE_ESSENTIAL
{ "txpower", print_txpower_info, 0, NULL },
{ "retry", print_retry_info, 0, NULL },
{ "ap", print_ap_info, 0, NULL },
{ "accesspoints", print_ap_info, 0, NULL },
{ "peers", print_ap_info, 0, NULL },
{ "event", print_event_capa_info, 0, NULL },
{ "auth", print_auth_info, 0, NULL },
{ "wpakeys", print_wpakeys_info, 0, NULL },
{ "genie", print_gen_ie_info, 0, NULL },
{ "modulation", print_modul_info, 0, NULL },
#endif /* WE_ESSENTIAL */
{ NULL, NULL, 0, 0 },
};
上面的程序看的不是很明白,能帮我讲讲吗?尤其比如说{ "frequency", print_freq_info, 0, NULL },这种格式是什么意思?他是iwlist_entry结构体里面的成员吗?
|
看样子是函数入口数组,通过输入命令cmd决定选择使用哪一个入口,fn是函数指针,max_count是参数的个数,argsname是参数列表。
比如,输入"rate"时,就要调用函数:print_bitrate_info();
比如,输入"rate"时,就要调用函数:print_bitrate_info();
|
static const struct iwlist_entry iwlist_cmds[] 这不是定义了一个iwlist_entry类型的结构体数组iwlist_cmds嘛;
{ "frequency", print_freq_info, 0, NULL }这是对数组iwlist_cmds中的成员(每一个数组成员都是一个iwlist_entry结构体变量)进行初始化:
cmd="frequency"
fn=print_freq_info
max_count=0
argsname=NULL
{ "frequency", print_freq_info, 0, NULL }这是对数组iwlist_cmds中的成员(每一个数组成员都是一个iwlist_entry结构体变量)进行初始化:
cmd="frequency"
fn=print_freq_info
max_count=0
argsname=NULL
|
个人认为,是的。其实这段程序我完全不明白是什么意思。大约是定义一结构体,再定义这个结构体类型的一个数组,赋值。
|
就是定义一个结构体数组,并且赋值。
|
这种设计挺常见的,不错的设计。需要注意的是fn是一个函数指针。
|
就是结构体成员的付值,没什么特别的呀