我使用 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 = %s\n", 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));
关于c - 我质疑即使 struct iwreq 没有 ifr_name 作为成员,该代码是如何编译的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69589566/