Ein Präprozessor ist eine Phase, die, bevor sie eine Kompilation auftritt beginnt. Es liest bestimmte Makros und Symbole, die ersetzt werden sollen. Es ist normalerweise ein bis zwei Passagen. Es scannt die gesamte Quelldatei und generiert eine Symboltabelle, um Makros zu ersetzen oder zu erweitern.
Nachdem alle Substitutionen vorgenommen wurden, übernimmt der Syntaxanalysator das Lexing-Parsing der Quelldatei, generiert abstrakte Syntaxbäume, generiert Code, verknüpft Bibliotheken und generiert ausführbare Dateien/Binärdateien.
In C/C++/ObjC Präprozessor DIREKTIVEN beginnen mit '#' gefolgt von dem Namen der Anweisung wie "definieren", "ifdef", "ifndef", "elif", "if", "endif" usw.
VOR PREPROCESSING:
#define TEXT_MACRO(x) L##x
#define RETURN return(0)
int main(int argc, char *argv[])
{
static wchar_t buffer[] = TEXT_MACRO("HELLO WORLD");
RETURN ;
}
nACH VORBEHANDLUNG:
int main(int argc, char *argv[])
{
static wchar_t buffer[] = L"HELLO WORLD";
return (0);
}
Wenn ich mich richtig erinnere, das Buch "The C Programming Language" 2. Auflage, von Kernighan und Ritchie ein Beispiel hat, wo sie zeigen, ho w um einen eigenen VORBEREITER zu erstellen und wie es funktioniert. Auch der Plan9 C Compiler trennte die beiden Prozesse (Kompilierung und Vorverarbeitung). Damit können Sie Ihren eigenen PREPROCESSOR verwenden.
Check out An interesting preprocessor for multiple languages und Write your own pre-processor. die Eingabe und Ausgabe dieser Programme zu sehen, gibt Ihnen ein tieferes Verständnis dessen, was ein Präprozessor tatsächlich ist.
Ein weiterer kleines Geheimnis: Sie können in C-Code Latin/Deutsch/Spanisch, wenn Sie einen Präprozessor haben :)
Danke, dass hilft – Murphy316
+1 Richtige Antwort und Sie gaben es zuerst. Ein Beispiel wäre aber nett. – Alex
Ein Beispiel wäre schön gewesen – Murphy316