Lo svantaggio è che si nasconde il codice. Il lato positivo è che si nasconde il codice.
Il lato negativo di solito supera il lato positivo.
Di solito questo particolare approccio è praticamente inutile e meno che la chiamata sembra più
someModule-> someStorage-> functionList [storage.getFunctionName] .pointer-> SomeFunction (... altrettanto oscura argomento ...);
non ha senso farlo. Se solo l'argomento è una chiamata oscura, abbrevia l'argomento. Se è solo la funzione, abbrevia la sola funzione.Se entrambi, si potrebbe essere meglio con
SOME_FUNCTION(SOME_ARGUMENT);
Se la funzione non viene mai chiamato con qualsiasi altra cosa, si potrebbe prendere in considerazione la rimozione dalla lista di argomenti e di ottenere all'interno del corpo della funzione. E se la coppia si ripete molto spesso, in piccole variazioni, potresti prendere in considerazione le funzioni del wrapper.
Dopo aver fatto diversi bug nel codice di una macro, imparerai che è difficile eseguirne il debug e non li userai in modo frivolo.
fonte
2010-01-19 10:48:35
utilizzando macro per questo non è più leggibile rispetto all'utilizzo di funzioni con lo stesso nome – user463035818