Ich würde gerne so etwas machen können
#print "C Preprocessor got here!"
für Debugging-Zwecke. Was ist der beste / tragbarste Weg, dies zu tun?
Ich würde gerne so etwas machen können
#print "C Preprocessor got here!"
für Debugging-Zwecke. Was ist der beste / tragbarste Weg, dies zu tun?
Antworten:
Die warning
Direktive ist wahrscheinlich die nächstgelegene, aber sie ist nicht vollständig plattformunabhängig:
#warning "C Preprocessor got here!"
AFAIK Dies funktioniert auf den meisten Compilern mit Ausnahme von MSVC, für die Sie eine pragma
Direktive verwenden müssen:
#pragma message ( "C Preprocessor got here!" )
#define WARNING(msg) _Pragma("message " #msg)
Folgendes wird von MSVC und GCC unterstützt .
#pragma message("stuff")
#pragma message "stuff"
Clang hat vor kurzem damit begonnen, Unterstützung hinzuzufügen . Weitere Informationen finden Sie hier .
Eine andere Lösung besteht darin, Kommentare und ein Shell-Skript zu verwenden, um sie zu verarbeiten. Dies erfordert etwas Disziplin (oder ein Shell-Skript, das Tippfehler abfängt).
Zum Beispiel füge ich formatierte Kommentare //TODO
und dann ein Shell-Skript hinzu, das alle in einem Bericht sammelt.
Für komplexere Anwendungsfälle können Sie versuchen, Ihren eigenen einfachen Präprozessor zu schreiben. Sie können beispielsweise Ihre Quellen als *.c2
Dateien bearbeiten . Der einfache Präprozessor würde die Quelle lesen, suchen //TODO
und printf("TODO ...")
in die Ausgabedatei schreiben *.c
.
Das kannst du nicht. Präprozessoren werden vor dem C-Code verarbeitet. Es gibt keine Präprozessoranweisungen, die auf dem Bildschirm gedruckt werden müssen, da Präprozessorcode nicht ausgeführt wird. Er wird zum Generieren des C-Codes verwendet, der in ausführbaren Code kompiliert wird.
Irgendwas falsch mit:
#ifdef ...
printf("Hello");
#endif
Denn das ist alles, was Sie für Präprozessoren tun können.
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Ich muss das versuchen, aber der Instinkt sagt mir, dass die Antwort nein ist.