我使用struct iwreq编写了非常简单的代码。此外,我预计这将是错误的。但是它被编译并且工作。
我查看了linux/wireless.h,其中有struct iwreq的定义。并且iwreq不ifr_name作为成员。
谁能给我个主意?下面是简单的代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <linux/wireless.h>
int main(void)
{
char *intf = "eth0";
struct iwreq iwr;
strncpy(iwr.ifr_name, intf, sizeof(iwr.ifr_name));
printf("main : intf = %s, iwr.ifr_name = %sn", intf, iwr.ifr_name);
return 0;
}
wireless.h
中包含if.h
,if.h
中包含:
#define ifr_name ifr_ifrn.ifrn_name /* interface name */
所以代码被翻译成:
strncpy(iwr.ifr_ifrn.ifrn_name, intf, sizeof(iwr.ifr_ifrn.ifrn_name));
/usr/include/linux/wireless.h包含linux/if.h:
#include <linux/if.h> /* for IFNAMSIZ and co... */
在/usr/include/linux/if.h中有:
#define ifr_name ifr_ifrn.ifrn_name /* interface name */