Quiero anular ciertas llamadas de función a varias API con el fin de registrar las llamadas, pero también podría querer manipular datos antes de enviarlos a la función real.Anular una llamada de función en C
Por ejemplo, supongo que uso una función llamada getObjectName
miles de veces en mi código fuente. Deseo anular temporalmente esta función a veces porque quiero cambiar el comportamiento de esta función para ver el resultado diferente.
puedo crear un nuevo archivo de origen como esto:
#include <apiheader.h>
const char *getObjectName (object *anObject)
{
if (anObject == NULL)
return "(null)";
else
return "name should be here";
}
puedo compilar toda mi otra fuente como lo haría normalmente, pero vincularlo en contra de esta primera función antes de enlazar con la biblioteca de la API. Esto funciona bien, excepto que obviamente no puedo llamar a la función real dentro de mi función principal.
¿Existe alguna manera más fácil de "anular" una función sin tener que obtener errores de enlace/compilación/advertencias? Lo ideal sería poder anular la función simplemente compilando y vinculando un archivo extra o dos en lugar de manipular las opciones de vinculación o modificar el código fuente real de mi programa.
@dreamlax, nos estamos moviendo de lo general (C) para soluciones específicas (gcc/Linux) ahora - que sería una buena idea para aclarar lo que se está ejecutando en el fin de orientar mejor las respuestas . – paxdiablo
Bueno, estoy desarrollando en Linux pero los objetivos son Mac OS, Linux y Windows. De hecho, una de las razones por las que quiero anular las funciones es porque sospecho que se comportan de manera diferente en diferentes sistemas operativos. – dreamlax