ho funzione: foo()
problema #define se chiamato dall'interno di un caso() bloccare
voglio scrivere un #define
di mettere 'Infront' di foo()
(uno spessore immagino) per aggiungere il debug al fronte di foo()
. Così il #define
dovrebbe guardare questo questo:
#define foo(dev) { \
printk("%s: get %lx\n", (dev)->name); \
foo_orig(dev); \
}
E poi ho rinominare foo()
-foo_orig()
.
Questo funziona bene se foo()
funzione viene chiamata in 'isolamento' in questo modo:
foo(dev);
MA, se la sua chiamata all'interno di un if()
, allora è un problema di compilazione ...
if (something() && foo(dev)) {
..
Ho spiegato il problema? e c'è una soluzione per questo?
Il problema è che ho davvero bisogno dello shim come definito perché ho bisogno del codice per vivere nella funzione chiamante anziché foo()
. [La ragione di questo è perché ho bisogno di scaricare l'EIP la funzione della chiamata per motivi di debug (vale a dire Ho bisogno di sapere chi sta chiamando foo()
]
Perché non fare una funzione invece di una macro che chiama printk e poi restituisce il valore di foo_orig? – PherricOxide
Non sai quale compilatore usi ma dovresti essere in grado di espandere le direttive del preprocessore e guardare il codice che il compilatore vede (e non piace) dopo l'espansione –