dus ik krijg deze waarschuwing:
initialization makes integer from pointer without a cast
in het volgende stukje code:
void receive(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *buffer)
{
const int one = 1;
int LEN = args; /* THIS IS THE LINE */
struct ipheader *ip;
struct tcpheader *tcp;
en om eerlijk te zijn, ik weet niet zo goed wat ik moet doen, aangezien bijna alle zoekopdrachten makes pointer from integer
.
Ik krijg ook deze compilerberichten:
/tmp/cci6u7NH.o: In function `main':
ChannelBunny.c:(.text+0x448): undefined reference to `pthread_create'
ChannelBunny.c:(.text+0x4b7): undefined reference to `pthread_join'
/tmp/cci6u7NH.o: In function `receive':
ChannelBunny.c:(.text+0xcb6): undefined reference to `nthol'
ChannelBunny.c:(.text+0xcdf): undefined reference to `nthol'
collect2: ld returned 1 exit status
verlost van een soortgelijk pcap-probleem door -l pcap
te gebruiken, maar dat werkte niet voor de andere twee. Het is net terug:
gcc: pthread: No such file or directory
gcc: nthol: No such file or director
Ik vermoed dat ik iets moet downloaden? of is er een ander commando dat ik moet gebruiken. (Ik gebruik Backtrack5 als je daar iets aan hebt).
Antwoord 1, autoriteit 100%
Dat zou je moeten doen
int LEN = *args;
args is een aanwijzer, * args is de waarde die erdoor wordt gewezen. Ook moet je geen U_Char in een int.
Voor nthol: http: //MSDN.MICROSOFT.com/EN-US/Library/windows/desktop/ms740069(v=vs.85).aspx
Antwoord 2, Autoriteit 43%
U kunt atoi()
–functie gebruiken om Char * naar Int.
te converteren
Over de koppelingsfout over Pthread, probeer -lpthread
op uw Compile-opdracht
Antwoord 3
U passeert een wijzer
u_char *args
U probeert het toe te wijzen aan een geheel getal
int LEN = args;
Het foutbericht zegt dit.
“maakt integer uit de aanwijzer”
De echte vraag is wat denk je dat args is? Gewoon van het kijken, ik denk dat het enkele argumenten bevat, niet de lengte van sommige argumenten?