gpt4 book ai didi

c - 取消引用指向 pcap_t 结构的不完整类型的指针

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:12 26 4
gpt4 key购买 nike

我正在使用 C 语言编写代码并使用 libpcap 库。我想查看 pcap_t 结构的字段,但总是有错误:

error: dereferencing pointer to incomplete type

最小代码如下:

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

编译完成:

gcc test.c -lpcap

根据 http://www.opensource.apple.com/source/libpcap/libpcap-9/libpcap/pcap-int.h , pcap_t 结构确实有这个字段。通常包含libpcap,所以我完全不明白。

谢谢!

结论: Olaf 似乎是对的:我有这个错误是因为我无法访问 pcap_t 结构。正如 Antti Haapala 所说,pcap_t 结构没有在 pcap/pcap.h 中定义,而是在另一个文件中定义。

我确实设法做了我想做的事,即使无法访问结构的字段也是如此。

问题已解决,感谢您的帮助!

最佳答案

pcap-int.h 中的-int代表internal .但是,您没有在代码中包含此 header 。

注意 pcap.h本身不包含此 header ,也不包含 struct pcap 的完整声明;而不是仅仅使用 typedef 中的前向声明:

typedef struct pcap pcap_t;

试试看:

#include <stdio.h>
#include <pcap/pcap-int.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);
}

唉,这个内部头文件似乎没有安装在 Linux 和 Mac 上。对于特别难看的 hack,您可以尝试从链接中复制 pcap-int.h

关于c - 取消引用指向 pcap_t 结构的不完整类型的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com