两个不同的库使用相同的名称类型

two different libraries using the same name types

我正在使用两个不同的 C++ 库。这两个库都使用类型的名称,比方说,称为 fofo。 在 lib1.h 中:

typedef short fofo;

在lib2.h中:

namespace LIB2
{

    typedef struct
    {
        uint16_t toto;    
    } fofo;
}
using LIB2::fofo;

我有一个使用这两个库的 C++ project/VS 2008: 当我在我的项目中做的时候

#include lib1.h

我收到错误:错误 C2874:使用声明导致多重声明

我想在我的项目中使用这两个库,但不对这些库进行任何更改。我唯一可以修改的是我的 VS2008 项目。感谢您的帮助!

这个(肮脏的)解决方法可能会起作用(取决于 headers 的使用方式)

不是直接包含 lib1.h,而是通过制作一个新的头文件来包装它

lib1wrapped.h

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