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