#define Macro entschlüsseln.
-
In diesem Mini Code, wird
mul(3, 4)
durch3 * 4 + 10
ersetzt.
Gibt es eine Möglichkeit, dieser entschlüsselte Code anzugucken ?
Mit einer Debuggerfunktion oder was ähnlichem.#include <stdio.h> #define mul(x, y) (x * y + 10) int main() { printf("Multi: %d\n", mul(3, 4)); }
Der Compiler muss dies ja machen, bevor er die Daten weiter verarbeitet.
-
Normalerweise kann man den Compiler anweisen das Zwischenergebnis in eine Datei abzulegen. Früher war es auf UNIX Systemen üblich, dass der Präprozessor
cpp
ein eigenständiges Programm, das zuerst die Textersetzungen durchführte bevor danncc
dann die eigentliche Übersetzung durchführte. Beim gcc erreicht man das mit-E
oder in dem mancpp
aufruft. Falls Du einen anderen Compiler nutzt musst Du in die Doku schauen.
-
@Mathuas sagte in #define Macro entschlüsseln.:
Der Compiler muss dies ja machen, bevor er die Daten weiter verarbeitet.
Das ist einfach nur eine pups-einfache Textsubstitution, die der Compiler vor dem Kompilierungsschritt macht. Da passiert kaum Magic.
-
gcc main.c -E
Danke, ganz zu unterst erscheint:
# 9 "main.c" int main() { printf("Multi: %d\n", (3 * 4 + 10)); }
-
@Mathuas sagte in #define Macro entschlüsseln.:
gcc main.c -E
Danke, ganz zu unterst erscheint:
Ja, das ist manchmal echt nützlich. Der einzige Nachteil ist, dass eben auch rekursive
#include
s eine "Macro expansion" sind. Da kann das schonmal schnell ziemlich unübersichtlich werden, wenn die betreffende Code-Stelle nicht gerade "ganz zu unterst" in dermain
ist