Ich möchte bestimmte Funktionsaufrufe an verschiedene APIs überschreiben, um die Aufrufe zu protokollieren, aber ich möchte möglicherweise auch Daten manipulieren, bevor sie an die eigentliche Funktion gesendet werden.
Ein Beispiel: Ich verwende eine Funktion namens getObjectName
Tausende von Malen in meinem Quellcode. Ich möchte diese Funktion manchmal vorübergehend außer Kraft setzen, weil ich das Verhalten dieser Funktion ändern möchte, um ein anderes 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 anderen Quelltexte wie gewohnt, aber ich verknüpfe sie zuerst mit dieser Funktion, bevor ich sie mit der API-Bibliothek verknüpfe. Dies funktioniert gut, außer ich kann offensichtlich nicht die echte Funktion innerhalb meiner überschreibenden Funktion aufrufen.
Gibt es einen einfacheren Weg zu "überschreiben" eine Funktion ohne Verknüpfung/Kompilierung Fehler/Warnungen zu erhalten? Idealerweise möchte ich in der Lage sein, die Funktion zu überschreiben, indem Sie nur kompilieren und verknüpfen eine zusätzliche Datei oder zwei statt fiddle um mit Verknüpfung Optionen oder Ändern der tatsächlichen Quellcode meines Programms.