c - OS/X 和 Linux 之间的 tcphdr 字段名称更改

标签 c linux tcp bsd

我已经在 OS/X 上开发了一些网络代码,我对 struct tcphdr 中重命名的字段感到厌恶。我收到了一堆格式错误:"dpkt.c:597:36: error: ‘struct tcphdr’ has no member named ‘th_sport’ "。我试过 #define __FAVOR_BSD 1#define _BSD_SOURCE 1,但没有成功。

命令行是:

$ g++ -o dpkt -g  dpkt.c -lpcap

尝试时没有变化

$ g++ -o dpkt -g  -D_BSD_SOURCE=1 dpkt.c -lpcap

谢谢...

最佳答案

在这种特殊情况下,定义的顺序很重要。不确定你是否意识到这一点,但尝试添加

#define _BSD_SOURCE
#define __FAVOR_BSD

按照文件开头某处的特定顺序。

关于c - OS/X 和 Linux 之间的 tcphdr 字段名称更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14130692/

相关文章:

c - Keil µvision 5 头文件显示错误,但是编译没有问题

c - Hashtable的有效实现,具有可识别缓存的本地性(对本地性敏感的哈希表)

c - 在 C 中为标准函数进行类型转换

linux - 如何在 Linux 上查找处理器/芯片架构

networking - 解析 libpcap 捕获的数据包的 IP 和 TCP header (尤其是常见的 tcp header 选项)

c - 如何修复选择排序交换访问冲突

linux - 将 grep 输出格式化为 CSV

c++ - 在执行程序时,完整的库是否会加载到内存 (RAM) 中?

Java Sockets TCP 发送和接收

php - PHP Socket Client仅发送和接收一条消息