Diskussion:C++-Programmierung/ Weitere Grundelemente/ Vorarbeiter des Compilers
Anmerkungen
Bearbeiten- Der Präprozessor arbeitet nicht auf "Textebene" sondern auf "Tokenebene". So erkennt er z.B. Bezeichner, Zeichenkette, Literale und andere Token.
- Was ist eine "Rohquelltextvorbearbeitungsstufe"?
- Woher hat der Autor die Aussage, dass definierte Makros zu 1L oder 0L expandiert werden? Ich finde diese Aussage nirgends im Standard.
Nachtrag: Der Name des Kapitels und die Einleitung sind falsch. Das, was man i.A. als "Präprozessor" bezeichnet ist ein integraler Bestandteil eines jeden C++-Compilers. Nämlich der, der die im Standard definierten Übersetzungsschritte 1 bis 10 übernimmt. Man sollte sich in diesem Wikibuch schon an den von der ISO definierten Sprachstandard halten, oder eben nicht C++ nennen, finde ich. --RokerHRO 21:12, 9. Okt. 2009 (CEST)
#if vs. if
BearbeitenWas ist der Unterschied zwischen if und #if ? Was sind die Vor- und Nachteile ? --79.233.216.137 12:18, 26. Okt. 2008 (CET)
#if
ist eine Präprozessor-Direktive und wird zur Compile-Zeit ausgewertet, damit muss der Ausdruck dahinter eben ein vom Präprozessor auswertbarer Ausdruck sein.if
wird dagegen zur Laufzeit ausgewertet. Falls die Bedingung eine Konstante ist, kann der Compiler ggf. die Sache wegoptimieren, also entweder denif
- oder denelse
-Zweig. Er muss es aber nicht tun. --RokerHRO 12:37, 27. Okt. 2008 (CET)
Abschnitt ##
BearbeitenWas bewirkt
- #define A "Hallo"
- define B "Welt"
- define A_UND_B A##B
? Ich kann diesen Code nicht ganz nachvollziehen. Irgendwie bekomme ich keine Ausgabe hin. Auf C-Präprozessor finde ich folgendes Beispiel, was ich für das modernere cout umgeschrieben habe.
- #define GLUE(X,Y) X ## Y // Verkettung von Makroparametern
- std::cout << GLUE(2, 34) << std::endl;
Aber was das soll, ist mir auch nicht ganz klar. Einfacher wäre es vielleicht gleich "234" zu schreiben. Ich habe meine Zweifel, dass man das Verknüpfen ganzer Programmteile hier schon verstehen kann. Oder habe ich vielleicht irgendein Kapitel übersehen? Ansonsten wäre ich für genauere Ausführungen dankbar.