当前位置:  开发笔记 > 编程语言 > 正文

为什么pcap_next_ex的第三个参数是不兼容的指针类型?

如何解决《为什么pcap_next_ex的第三个参数是不兼容的指针类型?》经验,为你挑选了1个好方法。

免责声明:这是一个家庭作业,但问题不在于作业,只是一般语法怪异.

我试图在一个更大的程序的上下文中使用libpcap,但是当我尝试获取每个数据包的数据包头和数据时,gcc抱怨pcap_next_ex的第三个参数是一个不兼容的指针类型.这是一些示例代码,看看我在说什么:

#include 
#include 
#include 

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

手册页指出pcap_next_ex()的原型是:

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

我传递的是一种不兼容的指针类型到底是怎么回事?谢谢.



1> diciu..:

将pktData的声明更改为:

const u_char *pktData;

和gcc应该停止抱怨.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有