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?
printing
c-preprocessor
Andrew Wagner
quelle
quelle
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Ich muss das versuchen, aber der Instinkt sagt mir, dass die Antwort nein ist.#define WARNING(msg) _Pragma("message " #msg)
Folgendes wird von MSVC und GCC unterstützt .
Clang hat vor kurzem damit begonnen, Unterstützung hinzuzufügen . Weitere Informationen finden Sie hier .
quelle
Vielleicht möchten Sie versuchen:
#pragma message("Hello World!")
quelle
Die meisten C-Compiler erkennen also eine
#warning
DirektiveEs gibt auch die Standard-Direktive '#error',
Obwohl alle Compiler dies unterstützen, wird auch die Kompilierung / Vorverarbeitung gestoppt.
quelle
funktioniert super. Auch würde die Kompilierung nicht aufhören, selbst wenn Sie -Werror verwenden
quelle
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
undprintf("TODO ...")
in die Ausgabedatei schreiben*.c
.quelle
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:
Denn das ist alles, was Sie für Präprozessoren tun können.
quelle