在OS/X和Linux之间更改tcphdr字段名

在OS/X和Linux之间更改tcphdr字段名,c,linux,tcp,bsd,C,Linux,Tcp,Bsd,我已经在OS/X上开发了一些网络代码,我对struct tcphdr中重命名的字段有了一些了解。我得到了一系列错误的形式:“dpkt.c:597:36:error:'struct tcphdr'没有名为'th_sport'的成员”。我尝试了#define(定义)偏好(BSD 1和#define(定义)BSD(源代码)1,但没有成功 命令行是: $ g++ -o dpkt -g dpkt.c -lpcap 当我尝试时没有改变 $ g++ -o dpkt -g -D_BSD_SOURCE=1

我已经在OS/X上开发了一些网络代码,我对struct tcphdr中重命名的字段有了一些了解。我得到了一系列错误的形式:
“dpkt.c:597:36:error:'struct tcphdr'没有名为'th_sport'的成员”
。我尝试了
#define(定义)偏好(BSD 1
#define(定义)BSD(源代码)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

在文件开头的某个特定顺序中。

您尝试定义的顺序是什么?而且,您不需要将它们定义为1,只需执行
#定义#BSD(u SOURCE