POSIX if.h 是否需要库才能使用

Does POSIX if.h require a library to use

使用 POSIX header 文件 #include <net/if.h> 是否也需要链接库?当我使用 header 文件中的常量时,出现以下错误。

error: IFNAMSIZ undeclared

#include <net/if.h>

int main(int argc, char** argv) {
    char f[IFNAMSIZ]; // compiler error
    return 0;
}

如果我需要一个图书馆,它的名字是什么? gcc -o test test.c -lif --std=c11 之类的内容不是有效的库。谷歌搜索没有找到任何结果,这令人非常沮丧。

*PS:您如何找出 POSIX header 需要哪些库?

解决方案:问题是因为我正在用--std=c11编译。这个问题描述了问题和解决方案:Why does C99 complain about storage sizes?

quick google看来,定义的名称似乎是IF_NAMESIZE,而不是IFNAMSIZ

您收到的错误不是来自缺少库*,而是来自编译器步骤中缺少定义,这意味着头文件未定义 IFNAMSIZ.

*) 如果是库问题,您会看到带有 'missing external symbol' 消息的链接器错误。