繁体   English   中英

替换std名称空间中的函数

[英]Replacing functions in the std namespace

我有一个库,通过使用标头中的定义来替换freemalloc和其他几个函数:

#define free some_custom_free 

不幸的是,当其他库(在这种情况下为boost)使用std::free而不是直接调用free时,这将严重中断:

error: 'some_custom_free' is not a member of 'std'

是否可以适当且方便地解决此问题,最好不必接触任何一个库?

不。 从星期天起,您就一头糟了,因为使用#define的库是由南方古猿编写的。 唯一的解决方案是更改执行#define free的库。

您应该使用__malloc_hook ,它允许您更改malloc功能。

  • 设置__malloc_hook以实际运行some_custom_malloc

  • 设置__free_hook来运行some_custom_free

  • 删除#define ,一切都会正常!

另一种选择-确保#include此库总是后#include升压/ STL /不管。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM