abc Napisano Grudzień 18, 2008 Zgłoszenie Share Napisano Grudzień 18, 2008 Chciałbym kompilując program w gcc sprawdzić czy funkcja / zmienna o danej nazwie jest zdefiniowana. Konkretniej, chciałbym zrobić coś w stylu #ifdef nazwa ... #else ... #endif gdzie nazwa jest nazwą funkcji lub zmiennej którą chce sprawdzić. Potrzebne mi to do tego, że piszę moduł do jądra i chciałbym, aby jeden kod był kompilowalny z różnymi jego wersjami. Tyle że jądro szybko się zmienia, dodają nowe rzezy, kasują stare i nie latwo się w tym połapać. Jakieś pomysły jak to zrobić? Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
mikolajs Napisano Grudzień 19, 2008 Zgłoszenie Share Napisano Grudzień 19, 2008 O ile wiem to preprocesor sprawdzaja tylko zdefiniowane wartości przez dyrektywy, a nie kod. Musiałbyś chyba przed każdą funkcją lub zmienną zdefiniować jej nazwę. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Grudzień 19, 2008 Zgłoszenie Share Napisano Grudzień 19, 2008 Jakieś pomysły jak to zrobić? Może mógłbyś jako parametr do kompilacji podawać np. parametr -DKVER_2_6_26 i potem w kodzie: #ifdef KVER_2_6_26 ... #endif Choć pewnie istnieją lepsze rozwiązania ;] Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
abc Napisano Grudzień 19, 2008 Autor Zgłoszenie Share Napisano Grudzień 19, 2008 Parametry do kompilacji oczywiście mogę dodać, tyle że to wymaga ręcznego szperania w której wersji jądra dany symbol się pojawił, w której zniknął. Dlatego miałem nadzieję że nieco bardziej automatycznie to się da zrobić. No nic, będę jakoś kombinował. W sumie cudów się nie spodziewałem, skoro nawet google nic sensownego na ten temat powiedzieć mi nie potrafił ;-) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
ecik__ Napisano Grudzień 19, 2008 Zgłoszenie Share Napisano Grudzień 19, 2008 Hm, to może robić ifdefy nie na podstawie wersji kernela, ale tych konkretnych symboli, a dodatkowo odpalać jakiś skrypt, który sprawdzi które symbole w danej wersji kernela są dostępne. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
abc Napisano Grudzień 21, 2008 Autor Zgłoszenie Share Napisano Grudzień 21, 2008 Ostatecznie zrobiłem skrypt odpalany w makefile, który do tego makefile dodaje odpowiednie flagi kompilacji (-Dsymbol) Sam skrypt sprawdza wersję jądra i generuje odpowiednie symbole. I pozatym ograniczyłem ilość różnych define do minimum. Rozwiązanie nie jest może najwygodniejsze, ale działa. Niesety moduł musi działać pod dość starą wersją jądra, a chciałem żeby działał też pod nowszą stąd zamieszanie. Ale przynajmniej czegoś się nauczyłem Dzięki za wszelki sugestie i pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się