- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 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/
我正在使用 C 语言编写代码并使用 libpcap 库。我想查看 pcap_t 结构的字段,但总是有错误: error: dereferencing pointer to incomplete typ
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我是一名优秀的程序员,十分优秀!