Supongamos que tengo foo # define en varios archivos de cabecera. Puede expandirse a algunas cosas diferentes. Me gustaría saber (al compilar un archivo .cc) cuándo se encuentra un #define, a qué se expandirá, qué archivo es y de dónde se ha incluido.¿Cómo saber (en GCC) cuando se declara el símbolo de macro/preprocesador?
¿Es posible? Si no, ¿hay alguna solución parcial que pueda ayudar?
Siéntase libre de añadir comentarios a las solicitudes de aclaración.
Edición: las respuestas actuales parecen concentrarse en el caso cuando hay una #define y solo quiero saltar a la definición o saber cuál es la definición. Ese es el caso simple y sí, sus soluciones funcionan. Pero cuando tengo el mismo #define en diferentes archivos, y quiero saber cuál de ellos entra primero, ninguna de estas técnicas es útil. De acuerdo, en realidad usé #warning cuidadosamente para encontrar el lugar correcto. Pero esto requiere mucho trabajo.
¿Qué quiere exactamente que haga cuando se encuentre con sus macros en la compilación? –
@Greg: imprimir información: tal o cual acaba de ser definido. Se expandiría a (...). Esto está en el archivo (...), línea (...). Incluido desde (una "rastredad de #includes que regresa a mi archivo .cc". –
Tendría un muy mal presentimiento sobre cualquier software donde esto hiciera la diferencia. –