Я хочу переопределить определенные вызовы функций для различных API для регистрации вызовов, но я также мог бы захотеть манипулировать данными перед их отправкой в реальную функцию.
Например, скажем, я использую функцию под названием getObjectName
тысячи раз в моем исходном коде. Я хочу временно переопределить эту функцию иногда, потому что я хочу изменить поведение этой функции, чтобы увидеть другой результат.
Я создаю новый исходный файл, подобный этому:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
Я компилирую все остальные источники, как обычно, но сначала связываю их с этой функцией, а затем с библиотекой API. Это работает нормально, за исключением того, что я, очевидно, не могу вызвать реальную функцию внутри моей переопределяющей функции.
Есть ли более простой способ "переопределить" функцию, не получая ссылки / ошибки компиляции / предупреждения? В идеале я хочу иметь возможность переопределить функцию, просто скомпилировав и связав дополнительный файл или два, а не возиться с опциями связывания или изменив фактический исходный код моей программы.