Ich bin in C codieren und libpcap Bibliothek verwenden. Ich möchte die Felder einer pcap_t Struktur, um zu sehen, haben aber immer den Fehler:Dereferenzierung Zeiger auf unvollständigen Typ für pcap_t Struktur
error: dereferencing pointer to incomplete type
Minimal-Code ist der folgende:
#include<stdio.h>
#include<pcap/pcap.h>
int main()
{
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *handle;
handle=pcap_open_live("eth0", 65535, 1, 1, errbuf);
printf("Handle%d\n", handle->fd);
pcap_close(handle);
}
Compilation erfolgt durch:
gcc test.c -lpcap
Nach zu http://www.opensource.apple.com/source/libpcap/libpcap-9/libpcap/pcap-int.h, hat die pcap_t Struktur dieses Feld. Die libpcap ist normalerweise enthalten, also verstehe ich überhaupt nicht.
Danke!
Fazit: Olaf scheint recht zu haben: Ich habe diesen Fehler, weil ich nicht auf die pcap_t Struktur zugreifen kann. Wie Antti Haapala sagte, ist pcap_t struct nicht in pcap/pcap.h definiert, sondern in einer anderen Datei.
Ich schaffte es trotzdem zu tun, was ich wollte, auch ohne Zugriff auf die Felder der Struktur.
Problem gelöst, danke für Ihre Hilfe!
Lesen Sie über undurchsichtige Zeiger in C. Die 'struct' Definition ist wahrscheinlich versteckt, wie Sie nicht darauf zugreifen sollen. – Olaf
Ja, es sieht so aus ... – snowfox