2012-07-26 7 views
2

有没有任何代码的简单,空项目。只包括。 将包含linux/netfilter.h中原因编译错误:当添加包含netfilter.h我得到的错误,领域'in','in6'有不完整的类型

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() { 
} 

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

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

谢谢

+0

有什么问题吗? – 2012-07-26 08:44:34

+0

编译错误。 – 2012-07-26 08:47:16

回答

0
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

+0

为什么他们不包括类型?为什么包括一件事情是不完整的? – 2012-07-26 15:08:30

4

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

#include <iostream> 
#include <netinet/in.h> 
#include <linux/netfilter.h> 
相关问题