Zauważyłem dość często pojawiający się schemat w moim kodzie i chciałbym to jakoś zoptymalizować. Otóż wyobraźmy sobie jedną, długą i skomplikowaną funkcję od czarnej roboty, która przyjmuje równie skomplikowany parametr. Aby ułatwić życie istnieje zestaw funkcji-nakładek, które przyjmują parametry w bardziej przyjaznej formie, przekształcają ją do skomplikowanej formy i odpalają funkcję od czarnej roboty. Przykładowy pseudokod mógłby wyglądać jak poniżej.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Problem polega na bezsensownym wywoływaniu łańcuszka funkcji np.
mod_reset wywołuje
mod_execute. Tymczasem wszystkie funkcje-nakładki mogłyby być
inline i np. w miejsce
mod_reset kompilator mógłby sam od razu wstawić
mod_execute z odpowiednimi parametrami, co mogłoby wyglądać jak poniżej.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Gdyby wszystko było w jednym pliku (lub funkcje-nakładki znajdowałyby się w
mod.h inkludowanym w
main.c), to wystarczyłoby dodać
static inline do każdej z nich i po problemie. Ale jakoś nie mogę się przekonać do definiowania takich funkcji w hederach. Innym rozwiązaniem byłoby zdefiniować te funkcje jako makra. Ale IMHO to jeszcze gorszy pomysł. Dlatego zastanawiam się czy można to zrobić jeszcze jakoś inaczej - lepiej.