es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo defino una macro para imprimir archivo, función, línea en cpp?

Estoy intentando crear una función de impresión que antepone la declaración de impresión con el nombre del archivo, la función y el número de línea.

La macro debug("test %d", 1) debería imprimir:

[src/main.cpp:main():8] test 1

Esta respuesta afirma que hace lo que quiero, y casi lo hace, pero no funciona tal como está (y la pregunta no es la misma que esta). Usando esa respuesta, pude crear esta macro:

#include <cstdio>  //necesario para printf
#define debug(a, args...) printf("[%s:%s():%d] " #a "\n", __FILE__, __func__, __LINE__, ##args)

Esto está muy cerca de lo que quiero, pero agrega comillas alrededor del texto, como se muestra a continuación. ¿Cómo puedo imprimir sin las comillas?

[src/main.cpp:main():8] "test 1"

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para imprimir sin comillas, elimine las comillas alrededor de la cadena de formato en la definición de la macro. La macro actualizada se vería así:

    c++
    #include <cstdio> //se necesita para printf
    #define debug(a, ...) printf("[%s:%s():%d] " a "\n", __FILE__, __func__ , __LINE__, ##__VA_ARGS__)

    Esto debería generar la salida deseada:

    [src/main.cpp:main():8] test 1

Comments are closed.