我在当前的一个项目中使用第三方C++库。虽然它们的lib没有定义自定义名称空间。所以,他们的所有功能都在那里。这不是什么大问题,但理想情况下他们会使用命名空间。在自定义命名空间下包含一个头部?
是否有可能将#include
的头文件置于某种类型的自定义伪名称空间下?这样,它们的所有功能都可以包含在名称空间中。
我在当前的一个项目中使用第三方C++库。虽然它们的lib没有定义自定义名称空间。所以,他们的所有功能都在那里。这不是什么大问题,但理想情况下他们会使用命名空间。在自定义命名空间下包含一个头部?
是否有可能将#include
的头文件置于某种类型的自定义伪名称空间下?这样,它们的所有功能都可以包含在名称空间中。
只要这会改变函数的名称(对于C++),就不能这样做。 链接器会将名称空间的名称附加到该函数,因此由于缺少该函数而导致链接失败。
对于instace以下代码
namespace MyName
{
class MyNestedOne
{
public:
void doNothing();
};
};
功能doNothing将有下列名称doNothing @ MyNestedOne @ MYNAME @@
正如你所说的,如果他们在一个命名空间可能会更好。然而这并不是什么问题。
或者,如果您可以使用.dll而不是.lib,则可以动态绑定它,使用它并放开它。这样你就不会有整个运行时间的浮动函数。
是否有单独的实现文件,或者是库头? – 2012-04-28 16:11:18
实现也在那里,但如果它意味着编辑他们的代码,我想我宁愿直接使用它,没有名称空间。 – Ryan 2012-04-28 16:13:25
因为'#include'实际上是复制粘贴的,所以你可以做'namespace something {#include“header”}',但是如果还有其他文件包含'#include“头文件”'和don'不要把'namespace {}放在它的周围(如实现文件)。所以真的没有办法手动编辑所有的文件。 – 2012-04-28 16:14:32