Estoy trabajando en una base de código bastante grande que tiene un poco de la magia #ifdef en marcha. Estoy mirando un archivo e intento determinar dónde se define un tipo. Desafortunadamente, incluye muchos archivos, que incluyen muchos archivos, que incluyen muchos archivos, etc., algunos de los cuales definen macros que afectan las definiciones que puede usar. La estructura es lo suficientemente complicada para que después de 10 minutos de almacenamiento y seguimiento de las cadenas de inclusión, todavía no tenga idea de qué definición se está utilizando. Recuerdo que el estudio visual tiene una característica agradable en la que puedo hacer clic derecho en el tipo y se mostrará dónde se define el tipo. ¿Existe una herramienta agradable equivalente para Linux que lea hacer archivos, etc.? Estoy seguro de que sí lo hay, pero igual utilizo vim + grep para mi entorno de desarrollo.Determinar dónde se define un tipo
Respuesta
Con definiciones y dependencias complicadas, esta función tampoco siempre funciona en Visual Studio.
Solución: solicite a su compilador que descargue el código después de que haya sido preprocesado, solicite también que imprima las directivas #line y #file. Busque a través del archivo resultante para su tipo, luego mire la directiva # archivo más cercano para ver de dónde viene.
(En GCC puede utilizar el interruptor -E)
Esto funcionó muy bien. Y tiene razón, ¿qué mejor forma de analizar todas las macros de preprocesador que con el preprocesador? –
A veces es útil/rápido escribir un programa corto usando las mismas opciones y bibliotecas que su proyecto y aprovechar cualquier rutina de presentación (si está disponible) para ayudar a determinar qué definición de la estructura se usa. – Sparky
- 1. Rieles: ¿Dónde se define "params"?
- 2. Dónde se define C++ size_t en Linux
- 3. ¿Dónde se define ptrdiff_t en C?
- 4. ¿Dónde se define la función err_sys()?
- 5. ¿Dónde se define la macro DEBUG?
- 6. ¿Cómo saber dónde se define una función?
- 7. ¿Dónde se define instance_eval en Ruby 1.9.2?
- 8. Determine dónde se define un alias de UNIX
- 9. Vea dónde se define un símbolo en irb
- 10. ¿Dónde se define un registrador estático de toda la aplicación?
- 11. ¿Cómo se define un tipo de interfaz de iterador?
- 12. ¿Cómo se define un tipo para una función en Scala?
- 13. ¿Dónde se define el color de la línea del cursor?
- 14. ¿Dónde se define la convención de nomenclatura de propiedades JavaBean?
- 15. RoR: ¿Dónde se define la ruta "carriles/información/propiedades"?
- 16. node.js Internals: ¿Cómo puedo averiguar dónde se define `process.binding ('eval')`?
- 17. ¿Cómo puedo encontrar dónde se define una constante en Ruby?
- 18. ¿Dónde se define jQuery.ajax en el código fuente jQuery?
- 19. Pasar argumentos cero como params - ¿dónde se define el comportamiento?
- 20. ¿Cómo determinar si un tipo es un tipo de colección?
- 21. donde se define Enum.values ()?
- 22. Determinar si un tipo es un tipo anónimo
- 23. Cuadrado de un número que se define usando #define
- 24. En Cocoa, ¿cómo se define el tipo de id?
- 25. ¿Cómo se define el tipo de dinero en F #
- 26. ¿Cómo se define una definición de tipo cíclico?
- 27. ¿Cómo se define (?) Internamente?
- 28. El tipo 'System.IDisposable' se define en un ensamblaje al que no se hace referencia
- 29. ¿Cómo determinar dónde Assembly.Load() busca ensamblajes?
- 30. ¿Cómo se define un método en Scala que devuelve un tipo?
Por qué no usar GDB, si eso es una opción, porque no creo que vim tiene una opción como VS menos un anuncio en algún lugar existe? Use un IDE como NetBeans. Pregunta relacionada, no un duplicado http://stackoverflow.com/questions/559274/any-program-or-trick-to-find-the-definition-of-a-variable – DumbCoder
En lugar de perder tiempo y esfuerzo rastreando la definición de esa variable, siempre podrías gastar mejor tus recursos para planear el asesinato de la persona que lo hizo. –