【发布时间】:2018-09-26 03:14:20
【问题描述】:
我在我的代码中使用了第 3 方库,我正在尝试测试它的最新版本。我的其他同事使用的是旧版本,我应该提交适用于两个版本的代码。 现在的问题是,我正在使用的函数在 2 个版本中具有不同数量的参数。
//eg- in ver_old
DoSomething(para 1, para 2);
//ver_new
DoSomething(para 1, para 2, para 3 , para 4);
如果我按照ver_new修改代码,有旧代码的就不能编译,如果我用ver_old,我就不能编译代码。库中有一个函数可以将版本作为 *char 返回。
有没有办法可以使用#if #else #endif 来选择要编译的方法?或者使用带有#define 的版本字符?
谢谢。
编辑 - 我将无法编辑库中的代码。
【问题讨论】:
-
您可以为新添加的参数设置默认值,以便新旧参数都能正常工作。恕我直言,使用宏使代码在两个版本中都能正常工作是作弊(顺便说一句,“动态”和“宏”通常不能很好地结合在一起)
-
我想这个库提供了一个宏来告诉版本号,所以你可以在上面使用
#if。否则你必须在你身边创建等价物。
标签: c++ macros version versioning