2016-06-11 3 views
0

Erfordert die Verwendung der POSIX-Headerdatei #include <net/if.h> auch die Verknüpfung einer Bibliothek? Ich erhalte den folgenden Fehler, wenn ich eine Konstante aus der Header-Datei verwende.Erfordert POSIX if.h die Verwendung einer Bibliothek?

error: IFNAMSIZ undeclared

#include <net/if.h> 

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

Wenn ich eine Bibliothek benötigen, was ist der Name davon? So etwas wie gcc -o test test.c -lif --std=c11 ist keine gültige Bibliothek. Das googeln bringt nichts, was ziemlich frustrierend ist.

* PS: Wie finden Sie heraus, welche Bibliotheken ein POSIX-Header benötigt?

Lösung: Das Problem liegt daran, dass ich mit --std=c11 kompilieren. Diese Frage beschreibt das Problem und die Lösung: Why does C99 complain about storage sizes?

+0

Verwenden Sie Grep und führen Sie es durch den Ordner lib;) – t0mm13b

Antwort

2

Aus quick google, es scheint der definierte Name IF_NAMESIZE ist, nicht IFNAMSIZ.

Der Fehler, den Sie bekommen, stammt nicht von einer fehlenden Bibliothek *, sondern von einer fehlenden Definition im Compiler-Schritt, was bedeutet, dass die Header-Datei IFNAMSIZ nicht definiert.

*) Wenn es sich um ein Bibliotheksproblem handelte, würden Linkerfehler mit Meldungen zu fehlenden externen Symbolen angezeigt.

+0

meine Header-Datei gefunden, indem Sie 'locate net/if.h' definiert es als' IFNAMSIZ' und mit 'IFNAMESIZE' Ergebnisse im gleichen Compiler-Fehler –

+0

Es könnte sein mehr als ein 'if.h'-Header auf Ihrem System. Es sieht nicht so aus, als würde der, der eingebunden wird, 'IFNAMSIZ' definieren, da sonst die Fehlermeldung, dass Sie es sind, nicht angezeigt wird. Der Fehler, den Sie erhalten, stammt nicht von einer fehlenden Bibliothek, sondern von einer fehlenden Definition beim Kompilierungsschritt. – MicroVirus

+0

@JakeM Es ist 'IF_NAMESIZE' mit dem Unterstrich. – MicroVirus

Verwandte Themen