struct重新定义系统文件的问题

时间:2011-06-21 21:26:58

标签: c header include structure

在Mac OS X上,我的代码中包含/usr/include/net/bpf.h和/usr/include/pcap/bpf.h。现在这两个都定义了一些相同的结构,所以我得到了重新定义错误。我需要这两个文件,因为它们都有我需要的其他代码。 我的问题是, 如何在我的代码中使用它而不必修改任何系统文件?有没有办法在我的代码中执行此操作,而不必简​​单地创建此头文件的副本并使用它?

我不想修改这些文件,因为其他应用程序只包含这两个文件中的一个,并且需要定义结构。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

对于这种情况,某些头文件具有#define。例如在windows中,如果你想使用winsock2并拥有windows.h,你需要这样做:

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>

否则,windows.h中包含的winsock1的定义将与winsock2冲突。但我怀疑pbf.h是否属于这种情况。这个模式在unix中不会发生太多。

最后的选择是决定你需要更多的头文件,删除第二个头文件并添加你手边缺少的定义,然后从第二个文件中复制粘贴它。您可能希望编写一个小脚本,根据函数的名称为您执行复制粘贴,因此它不会那么脆弱。