一段小程序,看的不是很明白。

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结构体里面的成员吗?

作者: joemax   发布时间: 2011-05-27

个人认为,是的。其实这段程序我完全不明白是什么意思。大约是定义一结构体,再定义这个结构体类型的一个数组,赋值。

作者: subfate   发布时间: 2011-05-27

就是定义一个结构体数组,并且赋值。

作者: jianle1000   发布时间: 2011-05-27

看样子是函数入口数组,通过输入命令cmd决定选择使用哪一个入口,fn是函数指针,max_count是参数的个数,argsname是参数列表。
比如,输入"rate"时,就要调用函数:print_bitrate_info();

作者: woweiwokuang0000   发布时间: 2011-05-27

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

作者: wyjie1987   发布时间: 2011-05-27

这种设计挺常见的,不错的设计。需要注意的是fn是一个函数指针。

作者: lishanchao   发布时间: 2011-05-27