Anruf cpp
direkt, z.B.
$ 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
Natürlich, wenn Sie Header hinzufügen, dann werden diese in der Ausgabe enthalten sein. Eine Möglichkeit, dies zu vermeiden, könnte sein, nur grep -v
aus den Zeilen mit #include
s (oder vielleicht nur mit #include <
und ermöglichen #include "
). Oder Sie können die Option -nostdinc
angeben, um nur Standard-Includes zu entfernen (aber möglicherweise in lokalen Bibliotheken bleiben, wenn Sie Include-Pfade angeben, so dass sie nicht gefunden werden) - dies würde jedoch über fehlende Header warnen.
Edit: Oder verwenden Sie den Präprozessor selbst, um die Einbeziehung von Kopfzeilen bedingten, wickeln Sie sie in etwas wie #ifndef TESTING_PREPROCESSOR
und verwenden Sie -DTESTING_PREPROCESSOR
.
+1 - Die Spitze für die Umsetzung der '# include' Linien in einer' # if' Abschnitt ist einer dieser einfachen, aber effektiven Dinge, die es könnte jemandem nicht einfallen, bis ein Haufen anderer Bemühungen vergeudet wurde, andere kompliziertere Dinge zu versuchen. –