我正在修改一个大型的C++项目,其中在其主要头文件中定义了枚举FooBar。该枚举被随处引用,不幸的是没有命名空间。
我想从该项目中使用一个C库,但不幸的是,它也在同一全局命名空间中定义了一个枚举FooBar。
我无法更改库的实现,而在C++项目中重命名或命名空间化枚举很困难,因为它在项目中得到广泛使用。
因此,最好的方法是向来自C库的所有符号添加命名空间。我尝试过类似以下方式的操作:
我想从该项目中使用一个C库,但不幸的是,它也在同一全局命名空间中定义了一个枚举FooBar。
我无法更改库的实现,而在C++项目中重命名或命名空间化枚举很困难,因为它在项目中得到广泛使用。
因此,最好的方法是向来自C库的所有符号添加命名空间。我尝试过类似以下方式的操作:
namespace c_library_foo {
#include <c_library_foo.h>
}
...
c_library_foo::c_library_function()
...
就编译而言,这是可行的,但链接器无法解析库中的符号,因为命名空间不在实现中。