Desidero sovrascrivere determinate chiamate di funzione a varie API per il gusto di registrare le chiamate, ma potrei anche voler manipolare i dati prima che vengano inviati alla funzione effettiva.Ignora una chiamata di funzione in C
Ad esempio, supponiamo di utilizzare una funzione chiamata getObjectName
migliaia di volte nel mio codice sorgente. Voglio sovrascrivere temporaneamente questa funzione a volte perché voglio cambiare il comportamento di questa funzione per vedere il risultato diverso.
creo un nuovo file sorgente in questo modo:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
compilo tutta la mia altra fonte come farebbe normalmente, ma i Link contro questa funzione prima di collegamento con la biblioteca del API. Funziona bene, tranne che ovviamente non posso chiamare la funzione reale all'interno della mia funzione di override.
C'è un modo più semplice per "ignorare" una funzione senza ottenere il collegamento/la compilazione di errori/avvisi? Idealmente, voglio essere in grado di sovrascrivere la funzione semplicemente compilando e collegando un file aggiuntivo o due piuttosto che giocherellare con le opzioni di collegamento o alterando il codice sorgente reale del mio programma.
@dreamlax, ci stiamo muovendo dal generale (C) per specifici (GCC/linux) soluzioni ora - sarebbe una buona idea per chiarire che cosa si sta eseguendo in modo da orientare meglio le risposte . – paxdiablo
Beh, sto sviluppando su Linux ma gli obiettivi sono Mac OS, Linux e Windows. Infatti uno dei motivi per cui voglio sovrascrivere le funzioni è perché sospetto che si comportino in modo diverso su sistemi operativi diversi. – dreamlax