如何实现包装函数来更改其他函数的返回类型?

时间:2011-07-11 16:06:19

标签: c

假设第三方库中有这样的功能:

rttype func(...);

如何编写一个功能相同但只是不同的包装函数,其返回类型为rttype *而不是rttype

2 个答案:

答案 0 :(得分:4)

一般来说,你没有。走向另一个方向有时可能是合理的,但是当你返回指针时,你会引入有关生命和所有权的问题。特别是,你返回指针的是什么,谁负责(如果有人的话)释放它所指向的记忆?

这些问题通常会影响整体设计,因此它们不是您可以在简单包装中合理解决的问题。

答案 1 :(得分:3)

您必须分配全局内存(堆上的内存),在那里分配rttype,然后返回指向已分配内存的指针。当然,这样做你将不得不在以后处理释放内存。

然而,通过这样做,你正在修改函数的语义和设计,你应该记住这一点并负责任地做出其他改变以尊重这一点。