定义错误代码,同时保留二进制兼容性

时间:2016-02-25 06:52:09

标签: c++ enums error-code binary-compatibility

我有一个存储在枚举中的错误代码(大约30个错误代码)。一位同事警告我,因为如果我更改枚举的数值,所有使用我的DLL的代码都必须重新编译,否则错误代码会变得不一致。我理解这个问题:枚举在编译过程中变成整数常量,因此DLL使用在编译时有效的枚举值,而不是在运行时,我希望这样。

我的问题是如何做得更好。请帮我。在下文中,我解释了我的想法,但如果我的想法有严重的缺点,欢迎更好的想法。

我的第一个想法是创建一个类并将代码存储为静态常量成员

class ErrorCodes
{
public:
  static const int ok;
  static const int error1;
  static const int error2;
};

并在.cpp

中定义它们的值
const int ErrorCodes:ok = 0;
const int ErrorCodes:error1 = -1;
const int ErrorCodes:error2 = -2;

这是否解决了上述问题?如果我添加或删除成员会发生什么?如果我更改错误代码的值会怎样?

0 个答案:

没有答案