socklen_t nicht deklariert beim Kompilieren von .c code

8

Ich versuche, diesen .c Code in Windows mit MinGW (gcc file.c -o compiled.exe) zu kompilieren:

%Vor%

Aber es ist mit dem Fehler fehlgeschlagen:

%Vor%

Ich habe versucht, den Fehler zu googeln, aber alles, was ich gefunden habe, ist Info über das Zusammenstellen bestimmter Software, aber nicht, was es verursachen könnte.

Was kann ich tun, um diesen Fehler zu beheben?

    
jarkam 20.08.2010, 13:51
quelle

4 Antworten

4

Finde heraus, in welcher .h-Datei es definiert ist, und schließe es ein. Unter einer Unix / Linux-Box würde ich mit einem find / grep in / usr / include

beginnen %Vor%

Sieht so aus, als ob es in unistd.h definiert ist - aber du hast das schon drin, also denke ich, dass du auf dieser Seite verdeckt bist. Ich weiß nicht, wie Sie die Datei auf der Windows-Seite finden würden.

    
Paul Tomblin 20.08.2010, 13:55
quelle
17

Unter mingw können Sie versuchen, ws2tcpip.h einzuschließen

%Vor%     
mickael 29.03.2014 19:27
quelle
3

Überprüfen Sie Ihre socket.h - das ist am wahrscheinlichsten, wo sie definiert ist. Ihr Code wird mit CygWin kompiliert, da% code% enthält (aufgrund der Tatsache, dass socket.h enthält):

%Vor%

Als Kludis könnten Sie versuchen, diese Zeile zu Ihrem eigenen Code hinzuzufügen. Aber du solltest immer noch untersuchen, warum es fehlt und vielleicht einen Fehler melden.

Es gibt sehr viele Seiten, die sich beschweren, dass MinGW socklen_t nicht unterstützt, zum Beispiel hier , hier , hier und hier , von denen die letzte besagt, dass sie in cygwin/socket.h lebt, wie ich es oben in meinem Kludi definiert habe.

    
paxdiablo 20.08.2010 14:01
quelle
1

Laut der Unix-Spezifikation stellt socket.h einen Typ zur Verfügung, socklen_t, der ist ein vorzeichenloser undurchsichtiger Integraltyp mit einer Länge von mindestens 32 Bits. Anscheinend enthält MingW es nicht.

Sie können es wie folgt definieren:

%Vor%     
André Wagner 20.08.2010 14:03
quelle