次の単一の 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」構造体の定義はまだ使用できません。
誰でも助けることができますか?