[英]Replacing functions in the std namespace
我有一个库,通过使用标头中的定义来替换free
, malloc
和其他几个函数:
#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.