没有任何代码就有简单的空项目。只是包括。 包含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的包含而不是没有错误。
为什么我的简单主程序不能有这些编译错误?
谢谢
答案 0 :(得分:5)
尝试在netinet/in.h
之前加入linux/netfilter.h
。
#include <iostream>
#include <netinet/in.h>
#include <linux/netfilter.h>
答案 1 :(得分:1)
union nf_inet_addr {
__u32 all[4];
__be32 ip;
__be32 ip6[4];
struct in_addr in;
struct in6_addr in6;
};
struct in_addr
和in6_addr
不是完整类型。所以,你应该在netfilter.h