处理多个定义的优雅方式

时间:2016-10-31 19:58:28

标签: c++ visual-studio

我在VStudio C ++项目中使用第三方C库。图书馆的提供商也是一个视觉工作室商店,所以我知道这应该是copacetic,但我无法在不编辑包含文件的情况下弄清楚如何做。

问题是必须包含在每个地方的2个头文件具有相同的定义:

#ifdef C_MICROSOFT

#define WRAPPER_FUNC  __declspec(dllexport)
#define STANDARD_FUNC
#define WRAPPER_CALL  _cdecl
#define STANDARD_CALL _stdcall
etc.. about 30 more

当我将这2个标题添加到我的项目时,我收到很多错误,例如:

C2086   'int STANDARD_FUNC': redefinition       

然而,我可以编译他们的一个示例项目,并使用相同的顺序包含相同的标题,没有问题。我认为它是一个编译器/语言设置,但我已经用精细的牙齿梳理了项目属性,我无法弄清楚它是什么。

我知道我可以删除重复的定义或添加另一个保护,但我不想编辑他们的文件,因为每次更新库时它都会引入错误的可能来源。

0 个答案:

没有答案