Pregunta

En general, de vez en cuando tiene una cadena de las macros con un par de preprocesador elementos condicionales en sus definiciones.Estos pueden ser dolorosas para depurar ya que es difícil ver directamente el código real que se está ejecutando.

Hace un tiempo me recuerdo vagamente encontrar un compilador (gcc) bandera para ampliar ellos, pero tenía problemas para conseguir que esto funcione en la práctica.

¿Fue útil?

Solución

gcc -E generará la salida de la fuente preprocesado a stdout.

Otros consejos

Para MSVC usuarios, usted puede hacer clic derecho sobre el archivo/proyecto, ver la configuración y cambiar las propiedades del archivo de salida procesados de origen (que normalmente en el directorio obj).

Esto podría no ser aplicable en su situación, pero macros realmente obstaculizar la depuración y a menudo son usados en exceso y evitables.

Puede reemplazarlos con funciones en línea o de otra manera de deshacerse de todos ellos juntos?

Probablemente, usted debe comenzar a moverse lejos de Macros y empezar a usar en línea y plantillas.

Las Macros son una herramienta vieja, el derecho de la herramienta a veces.Como último recurso recordar printf es tu amigo (y de hecho printf no es tan malo un amigo cuando tu haciendo multiproceso cosas)

Depurar el dissasembly con los símbolos cargados.

gcc-guardar-temps va a escribir una .i (o .ii archivo de C++) que es la salida del preprocesador de C, antes de que se entregó para el compilador.Esto a menudo puede ser esclarecedor.

GCC y compatible con los compiladores de utilizar la opción-E para la salida de el preprocesado de la fuente a la salida estándar.

gcc -E foo.cpp

Sun Studio también soporta esta bandera:

CC -E foo.cpp

Pero aún mejor es -xdumpmacros.Usted puede encontrar más información en Soles' docs.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top