Warum ist der dritte Parameter einen inkompatiblen Zeigertyp pcap_next_ex?
Frage
Disclaimer: Dies ist für eine Hausaufgabe, aber die Frage ist die Zuordnung nicht in Bezug auf, nur um allgemeine Syntax Seltsamkeit
.Ich versuche libpcap im Rahmen eines viel größeren Programm zu verwenden, aber wenn ich versuche, den Paket-Header und Daten für jedes Paket gcc zu erhalten beschwert sich, dass der dritte Parameter pcap_next_ex eines inkompatiblen Zeigertyp ist. Hier ist ein Beispielcode, um zu sehen, was ich rede:
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
int main()
{
pcap_t *pcap;
char pcapErr[PCAP_ERRBUF_SIZE];
struct pcap_pkthdr *pktHeader;
u_char *pktData;
pcap = pcap_open_offline("somefile.pcap", pcapErr);
if (pcap == NULL)
{
fprintf(stderr, "pcap_open_offline failed: %s\n", pcapErr);
exit(EXIT_FAILURE);
}
while (pcap_next_ex(pcap, &pktHeader, &pktData) == 1)
{
// do things here
}
pcap_close(pcap);
return EXIT_SUCCESS;
}
Der Mann Seiten angegeben, dass der Prototyp für pcap_next_ex () ist:
int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header, const u_char **pkt_data)
Wie genau ist, was ich vorbei einen inkompatiblen Zeigertyp? Danke.
Lösung
Ändern Sie die Deklaration von pktData zu lesen:
const u_char *pktData;
und gcc sollte aufhören, zu jammern.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow