Ich möchte bestimmte Funktionsaufrufe an verschiedene APIs überschreiben, um die Aufrufe zu protokollieren, aber ich möchte möglicherweise auch Daten bearbeiten, bevor sie an die eigentliche Funktion gesendet werden.
Angenommen, ich verwende eine Funktion, die getObjectName
in meinem Quellcode tausende Male aufgerufen wird . Ich möchte diese Funktion manchmal vorübergehend überschreiben, weil ich das Verhalten dieser Funktion ändern möchte, um das unterschiedliche Ergebnis zu sehen.
Ich erstelle eine neue Quelldatei wie folgt:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
Ich kompiliere alle meine anderen Quellen wie gewohnt, verknüpfe sie jedoch zuerst mit dieser Funktion, bevor ich sie mit der API-Bibliothek verknüpfe. Dies funktioniert gut, außer dass ich die reale Funktion in meiner überschreibenden Funktion offensichtlich nicht aufrufen kann.
Gibt es eine einfachere Möglichkeit, eine Funktion zu "überschreiben", ohne Fehler / Warnungen beim Verknüpfen / Kompilieren zu erhalten? Idealerweise möchte ich in der Lage sein, die Funktion zu überschreiben, indem ich nur ein oder zwei zusätzliche Dateien kompiliere und verknüpfe, anstatt mit Verknüpfungsoptionen herumzuspielen oder den tatsächlichen Quellcode meines Programms zu ändern.