我正在尝试编译以下单个 C 文件(称为 main.c):
#include <stdio.h>
#define __USE_MISC 1
#include <net/if.h>
int main(int argc, char **argv)
{
ifreq id_ifreq;
fprintf(stdout, ">>>>>> OK <<<<<<\n");
}
...使用“gcc main.c -o main”。我收到以下错误:
main.c: In function ‘main’:
main.c:9:2: error: unknown type name ‘ifreq’
我知道“ifreq”结构定义位于“#ifdef __USE_MISC”宏中,但是,我无法激活该代码块。
我开发了以下代码来检查定义了哪些宏(使用“gcc main.c -o main”编译):
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <net/if.h>
int main(int argc, char **argv)
{
#ifdef __USE_MISC
printf("__USE_MISC defined\n");
#endif
#ifdef _GNU_SOURCE
printf("_GNU_SOURCE defined\n");
#endif
#ifdef _BSD_SOURCE
printf("_BSD_SOURCE defined\n");
#endif
#ifdef _SVID_SOURCE
printf("_SVID_SOURCE defined\n");
#endif
}
结果是除了“_GNU_SOURCE”之外,它们都被定义了。但是,我仍然无法使用“net/if.h”文件中包含的“ifreq”结构的定义。
有人可以帮忙吗?