2010-12-27 17 views
5

Pracuję nad dość dużą bazą kodu, która ma trochę magii #ifdef. Patrzę na jeden plik i próbuję określić, gdzie określony jest typ. Niestety, zawiera wiele plików, które zawierają wiele plików, które zawierają wiele plików, itp. Niektóre z nich definiują makra, które wpływają na definicje, których możesz użyć. Struktura jest na tyle skomplikowana, że ​​po 10 minutach pomieszania i śledzenia łańcuchów, wciąż nie mam pojęcia, która definicja jest używana. Pamiętam, że studio graficzne ma fajną funkcję, w której mogę kliknąć prawym przyciskiem myszy na typ i pokaże, gdzie jest zdefiniowany typ. Czy istnieje ekwiwalentne, dobre narzędzie do linuxa, które czyta pliki, itp.? Jestem pewien, że tak jest, ale wciąż używam vim + grep dla mojego środowiska programistycznego.Określanie, gdzie jest zdefiniowany typ

+0

Dlaczego nie używając gdb, jeśli jest to opcja, ponieważ nie sądzę, vim posiada opcję jak VS, chyba że dodamy do tego istnieje gdzieś? Użyj IDE, takiego jak NetBeans. Powiązane pytanie, a nie duplikat http://stackoverflow.com/questions/559274/any-program-or-trick-to-find-definition-of-a-variable – DumbCoder

+0

Zamiast marnować czas i wysiłek, wyśledzenie definicji tej zmiennej zawsze możesz lepiej wydać swoje zasoby planując morderstwo osoby, która to zrobiła. –

Odpowiedz

4

Przy skomplikowanych definicjach i zależnościach ta funkcja nie zawsze działa w programie Visual Studio.

Rozwiązanie: poproś kompilator, aby zrzekł się kodu po jego wstępnej obróbce, poproś go o wydrukowanie również dyrektyw #line i #file. Wyszukaj plik wynikowy dla swojego typu, a następnie spójrz na najbliższą dyrektywę #file, aby zobaczyć, skąd pochodzi.

(W GCC można użyć przełącznika -E)

+0

To działało świetnie. I masz rację, jaki lepszy sposób na przeanalizowanie wszystkich makr preprocesora niż w preprocesorze? –

+0

Czasami warto/szybko napisać krótki program, korzystając z tych samych opcji i bibliotek, co projekt, i wykorzystać dowolne procedury wyświetlania (jeśli są dostępne), aby pomóc w określeniu, która definicja struktury jest używana. – Sparky

Powiązane problemy