最佳答案
为了记录这些调用,我希望重写对各种 API 的某些函数调用,但是我也可能希望在将数据发送到实际函数之前对数据进行操作。
例如,假设我在源代码中数千次使用一个名为 getObjectName
的函数。有时候我想要临时覆盖这个函数,因为我想要改变这个函数的行为来看到不同的结果。
我创建了一个新的源文件,如下所示:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
我像平常一样编译所有其他的源代码,但是在链接到 API 的库之前,我首先将它链接到这个函数。这个函数工作得很好,只是我显然不能调用覆盖函数中的实函数。
有没有更简单的方法来“覆盖”一个函数而不用链接/编译错误/警告?理想情况下,我希望能够通过编译和链接一个或两个额外的文件来覆盖函数,而不是瞎忙于链接选项或修改程序的实际源代码。