проблема переопределения структуры с системными файлами - PullRequest
1 голос
/ 22 июня 2011

В Mac OS X у меня есть /usr/include/net/bpf.h и /usr/include/pcap/bpf.h, включенные в мой код.Теперь оба имеют определенные одинаковые структуры, поэтому я получаю ошибку переопределения.Мне нужны эти оба файла, так как у них обоих есть какой-то другой код, который мне нужен.Мой вопрос: как мне заставить это работать в моем коде, не изменяя ни один системный файл?Есть ли способ сделать это в моем коде, не создавая копию этого заголовочного файла и не используя его вместо этого?

Я не хочу изменять эти файлы, поскольку есть другие приложения, которые включаюттолько один из этих двух файлов и потребуется структура определена.Заранее спасибо.

1 Ответ

1 голос
/ 22 июня 2011

Некоторые заголовочные файлы имеют #define s именно для таких случаев.Например, в Windows, если вы хотите использовать winsock2 и иметь windows.h, вам нужно сделать:

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

В противном случае определения winsock1, включенные в windows.h, будут конфликтовать с winsock2.Однако я сомневаюсь, что это так с pbf.h.этот паттерн не так часто встречается в Unix.

Последний вариант - решить, какой заголовочный файл вам нужен больше, удалить второй и вручную добавить определение, которое вам не хватает, y copy-вставить его со второго.Возможно, вы захотите написать небольшой сценарий, который выполняет вставку копии для вас на основе имен функций, чтобы он не был таким хрупким.

...