2010-12-27 17 views
5

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

+0

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

+0

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. –

Respuesta

4

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)

+0

Esto funcionó muy bien. Y tiene razón, ¿qué mejor forma de analizar todas las macros de preprocesador que con el preprocesador? –

+0

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

Cuestiones relacionadas