Me gustaría poder hacer algo como
#print "C Preprocessor got here!"
con fines de depuración. ¿Cuál es la forma mejor / más portátil de hacer esto?
printing
c-preprocessor
Andrew Wagner
fuente
fuente
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... tendré que intentarlo, pero el instinto me dice que la respuesta es no.#define WARNING(msg) _Pragma("message " #msg)
Los siguientes son compatibles con MSVC y GCC .
Clang ha comenzado a agregar soporte recientemente, consulte aquí para obtener más información.
fuente
Es posible que desee probar:
#pragma message("Hello World!")
fuente
La mayoría de los compiladores de C reconocerán una
#warning
directiva, por lo queTambién existe la directiva estándar '#error',
Si bien todos los compiladores lo admiten, también detendrá la compilación / preprocesamiento.
fuente
Funciona genial. Además, no detendría la compilación incluso si usa -Werror
fuente
Otra solución es utilizar comentarios más un script de shell para procesarlos. Esto requiere algo de disciplina (o un script de shell que detecta errores tipográficos).
Por ejemplo, agrego comentarios formateados
//TODO
y luego un script de shell que los recopila todos en un informe.Para casos de uso más complejos, puede intentar escribir su propio preprocesador simple. Por ejemplo, puede editar sus fuentes como
*.c2
archivos. El preprocesador simple leería la fuente, buscaría//TODO
y escribiríaprintf("TODO ...")
en el*.c
archivo de salida .fuente
No puedes. Los preprocesadores se procesan antes que el código C. No hay directivas de preprocesador para imprimir en la pantalla, porque el código del preprocesador no se ejecuta, se usa para generar el código C que se compilará en código ejecutable.
Cualquier problema con:
Porque esto es todo lo que puede hacer en lo que respecta a los preprocesadores.
fuente