当添加包括netfilter.hi了错误域“中”,“IN6具有不完整的类型(When add inc

2019-09-20 05:47发布

有没有任何代码简单,空项目。 只是包括。 该包含linux / netfilter.h中原因编译错误:

In file included from ../src/main.cpp:2:0:
/usr/include/linux/netfilter.h:65:17: error: field ‘in’ has incomplete type
/usr/include/linux/netfilter.h:66:18: error: field ‘in6’ has incomplete type

正如你可以在简单的项目看,我有2个包括如果我删除了iostream包括我会得到更多的错误 - “/usr/include/linux/sysctl.h:40:2:错误:为size_t“没有指定类型“

#include <iostream>
#include <linux/netfilter.h>

int main() {
}

如果我添加包括netfilter.h中不是没有错误之前netinet / in.h中的。

为什么我的简单的主程序不能有这些编译错误?

谢谢

Answer 1:

union nf_inet_addr {
    __u32       all[4];
    __be32      ip;
    __be32      ip6[4];
    struct in_addr  in;
    struct in6_addr in6;
};

struct in_addrin6_addr是不完整的类型。 所以,你应该包括头前与结构的声明netfilter.h



Answer 2:

尝试包括netinet/in.h之前linux/netfilter.h

#include <iostream>
#include <netinet/in.h>
#include <linux/netfilter.h>


文章来源: When add include netfilter.h i got error that fields 'in','in6' has incomplete type