you tiene proyecto paso para not informacion info herramientas have errores enabled dev depuracion correccion c++ debugging gcc macros

tiene - paso a paso c++



¿Hay un buen método general para depurar macros de C++? (7)

En general, ocasionalmente tengo una cadena de macros anidadas con algunos elementos condicionales de preprocesador en sus definiciones. Puede ser doloroso depurar, ya que es difícil ver directamente el código real que se está ejecutando.

Hace un tiempo recuerdo vagamente haber encontrado una bandera de compilador (gcc) para expandirlos, pero tuve problemas para que esto funcionara en la práctica.


gcc -E enviará la fuente preprocesada a stdout.


Depure la distribución con los símbolos cargados.


Esto podría no ser aplicable en su situación, pero las macros dificultan la depuración y, a menudo, se usan en exceso y son evitables.

¿Puedes reemplazarlos con funciones en línea o de lo contrario deshacerse de todos juntos?


Para los usuarios de MSVC, puede hacer clic con el botón derecho en el archivo / proyecto, ver la configuración y cambiar las propiedades del archivo para generar el origen preprocesado (que normalmente está en el directorio obj).


Probablemente deberías comenzar a moverte desde las Macros y comenzar a usar las plantillas en línea.

Las macros son una herramienta antigua, la herramienta adecuada a veces. Como último recurso, recuerde que printf es su amigo (y en realidad printf no es un amigo tan malo cuando hace cosas de multiproceso)


gcc -save-temps escribirá un archivo .i (o .ii para C ++) que es la salida del preprocesador C, antes de que se entregue al compilador. Esto a menudo puede ser esclarecedor.


GCC y compiladores compatibles usan la opción -E para enviar la fuente preprocesada a la salida estándar.

gcc -E foo.cpp

Sun Studio también es compatible con esta bandera:

CC -E foo.cpp

Pero aún mejor es -xdumpmacros. Puede encontrar más información en los documentos de Suns.