PCAP_NEXT_EX의 세 번째 매개 변수가 호환되지 않는 포인터 유형 인 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/430678

  •  08-07-2019
  •  | 
  •  

문제

면책 조항 : 이것은 숙제를위한 것이지만, 문제는 과제에 관한 것이 아니라 일반적인 구문 이상함에 관한 것입니다.

훨씬 더 큰 프로그램의 맥락에서 libpcap을 사용하려고 노력하지만 각 패킷 GCC에 대한 패킷 헤더와 데이터를 얻으려고 할 때 PCAP_NEXT_EX의 세 번째 매개 변수는 호환되지 않는 포인터 유형이라고 불평합니다. 다음은 내가 말하는 내용을 볼 수있는 샘플 코드입니다.

#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;
}

Man Pages는 PCAP_NEXT_EX ()의 프로토 타입이 다음과 같습니다.

int pcap_next_ex(pcap_t *p, struct pcap_pkthdr **pkt_header, const u_char **pkt_data)

내가 호환되지 않는 포인터 유형을 정확히 통과하는 것은 정확히 어떻게됩니까? 감사.

도움이 되었습니까?

해결책

pktdata의 선언을 읽으십시오.

const u_char *pktData;

그리고 GCC는 불만을 중단해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top