llamada cpp
directamente, por ejemplo,
$ cat >foo.c <<EOF
#define FOO
#ifdef FOO
foo is defined
#else
foo is not defined
#endif
EOF
$ cpp foo.c
# 1 "foo.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "foo.c"
foo is defined
Por supuesto, si incluye cualquier encabezado, se incluirán en la salida. Una forma de evitar eso podría ser simplemente grep -v
fuera de las líneas con #include
s (o tal vez solo con #include <
y permitir #include "
). O bien, podría especificar la opción -nostdinc
para eliminar solo las inclusiones estándar (pero posiblemente las deje en las bibliotecas locales a menos que especifique rutas de acceso para que no se encuentren); sin embargo, esto podría advertir sobre la ausencia de encabezados.
Editar: O utilice el preprocesador para hacer la inclusión de encabezados condicional, envuélvalos en algo como #ifndef TESTING_PREPROCESSOR
y use -DTESTING_PREPROCESSOR
.
+1 - El consejo para poner las líneas '# include' en un' # if' sección es una de esas cosas simples pero eficaces que Es posible que no se le ocurra a alguien hasta que se desperdicie un montón de otros esfuerzos intentando otras cosas más complicadas. –