Я использую две разные библиотеки C ++. Обе библиотеки используют имя для типа, скажем, с именем fofo.
В lib1.h:
typedef short fofo;
В lib2.h:
namespace LIB2
{
typedef struct
{
uint16_t toto;
} fofo;
}
using LIB2::fofo;
У меня есть проект C ++ / VS 2008, который использует обе библиотеки:
когда я делаю в моем проекте
#include lib1.h
Я получаю ошибку: ошибка C2874: использование-объявление вызывает множественное объявление
Я хотел бы использовать в своем проекте обе библиотеки, но без каких-либо изменений в этих библиотеках. Единственное, что я могу изменить — это мой проект VS2008. Спасибо за вашу помощь!
этот (грязный) обходной путь, вероятно, будет работать (в зависимости от того, как используются заголовки)
вместо непосредственного включения lib1.h оберните его, создав новый заголовочный файл
lib1wrapped.h
#define fofo fofo_wrap
#include "lib1.h" // OR <lib1.h>
#undef fofo
Других решений пока нет …