две разные библиотеки, использующие одинаковые типы имен

Я использую две разные библиотеки 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. Спасибо за вашу помощь!

1

Решение

этот (грязный) обходной путь, вероятно, будет работать (в зависимости от того, как используются заголовки)

вместо непосредственного включения lib1.h оберните его, создав новый заголовочный файл

lib1wrapped.h

#define fofo fofo_wrap
#include "lib1.h" // OR <lib1.h>
#undef fofo
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]