当添加包括netfilter.h时,我收到错误,字段"in","in6"的类型不完整
When add include netfilter.h i got error that fields 'in','in6' has incomplete type
有一个简单的,没有任何代码的空项目。包含 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
正如您在简单项目中所看到的,如果我删除iostream包含,我将收到其他错误 - '/usr/include/linux/sysctl.h:40:2:错误:"size_t"没有命名类型'
#include <iostream>
#include <linux/netfilter.h>
int main() {
}
如果我在netfilter.h之前添加netinet/in.h的包含,则没有错误。
为什么我的简单主程序不能有这些编译错误?
谢谢
尝试在linux/netfilter.h
之前包含netinet/in.h
。
#include <iostream>
#include <netinet/in.h>
#include <linux/netfilter.h>
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
之前包含带有结构声明的标头
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- 重新定义类型包括NetInet/In.H和NetInet6/in6.h
- 当添加包括netfilter.h时,我收到错误,字段"in","in6"的类型不完整