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?
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?
Respuestas:
La warning
directiva es probablemente lo más cercano que obtendrá, pero no es completamente independiente de la plataforma:
#warning "C Preprocessor got here!"
AFAIK, esto funciona en la mayoría de los compiladores, excepto MSVC, en el que tendrá que usar una pragma
directiva:
#pragma message ( "C Preprocessor got here!" )
#define WARNING(msg) _Pragma("message " #msg)
Los siguientes son compatibles con MSVC y GCC .
#pragma message("stuff")
#pragma message "stuff"
Clang ha comenzado a agregar soporte recientemente, consulte aquí para obtener más información.
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ía printf("TODO ...")
en el *.c
archivo de salida .
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:
#ifdef ...
printf("Hello");
#endif
Porque esto es todo lo que puede hacer en lo que respecta a los preprocesadores.
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... tendré que intentarlo, pero el instinto me dice que la respuesta es no.