【发布时间】:2012-07-07 15:06:31
【问题描述】:
我刚刚回到 C 编程领域,我遇到了一个我认为与链接器相关的问题。
我也是第一次使用 cmake,所以这可能会增加我的挫败感。
我包含了一个第三方头文件,其中包含我的代码尝试使用的 typedef,它有以下行:
typedef struct pcap pcap_t;
所以我的代码有
pcap_t *var;
//later.....
var->fd;// this line throws the error
抛出
error: dereferencing pointer to incomplete type
我只是缺少另一个包含文件,还是链接器问题?我正在 QtCreator 中构建此代码并使用 cmake。我可以深入 a_t 以查看包含的标头中的 typedef 声明,但我似乎无法深入了解“struct a”本身以查看它的来源。
谢谢
编辑了上面的代码以反映我正在使用 pcap 库
所以我在源文件的头文件中包含以下几行
#include <net/bpf.h>
#include <pcap/pcap.h>
所以我猜这两个包括之间,我错过了 pcap 结构的定义。我在哪里可以找到它?
谢谢
【问题讨论】:
-
结构来自一个标准的 linux 库,包含是我发行版的一部分
-
没有足够的信息来说明您的问题。为什么不发布更多代码?
-
我看看能不能发更多,谢谢你看
-
您获得
typedef的标头是否包含struct a或前向声明? -
不是链接器错误,而是编译时错误。您在范围内没有
struct a的声明。您没有为编译器提供足够的信息来知道在哪里寻找var->member,因此它无法生成代码。您需要包含定义struct a的标头,而不仅仅是定义typedef的标头。