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
Odpowiedz
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)
To działało świetnie. I masz rację, jaki lepszy sposób na przeanalizowanie wszystkich makr preprocesora niż w preprocesorze? –
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
- 1. Określanie, gdzie zdefiniowany jest alias UNIX
- 2. Gdzie jest zdefiniowany operator Haskell (. :)?
- 3. Zobacz, gdzie symbol jest zdefiniowany w irb
- 4. Gdzie jest zdefiniowany banner uruchamiania Pythona?
- 5. Określanie, czy typ jest podklasą typu ogólnego
- 6. Co to jest NSConcreteData i gdzie jest on zdefiniowany?
- 7. sqlconnection nie jest zdefiniowany
- 8. Błąd "Typ nie jest zdefiniowany" podczas tworzenia projektu
- 9. Gdzie jest zdefiniowany konstruktor String (int, int, char [])?
- 10. W Emacs Lisp, jak znaleźć, gdzie symbol jest zdefiniowany
- 11. Słownik gdzie wartość jest anonimowy typ C#
- 12. Określanie, czy typ materiału służącego do selekcji obrazów jest wideo
- 13. Czy mój typ zwrotu musi być zdefiniowany?
- 14. Typ zdefiniowany przez użytkownika w bazach danych
- 15. Android: Gdzie powinien być zdefiniowany/zarejestrowany OnSharedPreferenceChangeListener?
- 16. Określanie generyczny typ kolekcja param przy starcie
- 17. defaultdict nie jest zdefiniowany
- 18. ISODate nie jest zdefiniowany
- 19. Gdzie jest zdefiniowane ptrdiff_t w C?
- 20. Co jest przyczyną "kątowego nie jest zdefiniowany"
- 21. Widok kręgosłupa - nie jest zdefiniowany
- 22. Niepowodzenie ReferenceError: $ nie jest zdefiniowany
- 23. ReferenceError: HighCharts nie jest zdefiniowany
- 24. ReferenceError: Chartkick nie jest zdefiniowany
- 25. $ wyjątek jest zdefiniowany w "locals"
- 26. ReferenceError: google nie jest zdefiniowany
- 27. ReferenceError: require nie jest zdefiniowany
- 28. Pyspark StructType nie jest zdefiniowany
- 29. ReferenceError: webpack nie jest zdefiniowany
- 30. AngularJS - $ zasób nie jest zdefiniowany
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
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. –