如何在大型项目中管理具有内联命名空间的多个ABI版本?

时间:2016-10-17 23:00:00

标签: c++ namespaces abi

C ++ 11的内联命名空间似乎旨在解决在同一C ++标头中支持多个ABI版本的问题,方法是在新版本的API中添加新的命名空间并更改默认情况下内联的内容:

inline namespace abi2 {
  int bar(int x);  // New version

  int baz();  // The same
}

namespace abi1 {
  int bar(int x, int y);  // Deprecated

  int baz();  // The same
}

abi1是内联命名空间时编译回来的程序在添加abi2后仍然可以在运行时链接到库(作为新编译程序的默认值)。我得到了这一切。

我不理解的部分是:如果我在abi1中有多个头文件中的200个方法,我想通过更改其中的几个来打破ABI(引入{{1有没有办法在没有重新声明(和实现)abi2中版本(baz之上)之间没有变化的所有方法的情况下做到这一点?

0 个答案:

没有答案