Diskussion:C-Präprozessor

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 1 Monat von RokerHRO in Abschnitt Vereinfachung / Tokenizing
Zur Navigation springen Zur Suche springen

define und symbolische konstanten ?

[Quelltext bearbeiten]

Hallo. Ich wollte mir einen Überblick über Präprozessoren verschaffen. In dem Artikel ging das ja noch. Aber hier steht ja fast nur sehr fachspezifisches. Kann man #define nicht für's Definieren von "symbolischen Konstanten" benutzen - und wenn ja oder nein - was sind über symbolische Konstanten? Grüße --WissensDürster 12:47, 24. Feb. 2009 (CET)Beantworten

Tja, dass in C-Präprozessor speziell auf selbigen eingegangen wird und nicht auf Präprozessoren allgemein, sollte verständlich sein X-) Richtig ist aber, dass der Hauptartikel "Präprozessor" etwas schwach ist. --arilou 18:31, 12. Mai 2009 (CEST)Beantworten
"symbolische Namen von Konstanten", Beispiel: #define PI 3.14159
Afaik ist die allgemeine Sprechweise eher, dass hier PI die Konstante ist, und 3.14159 ein Literal, oder? Ein "Makro ohne Parameter" ist eine Konstante.
Zu WissensDürsters Frage: als symbolische Konstante gilt eine Konstante "ohne zugewiesenem Wert", das kommt im Artikel nicht richtig rüber.--arilou 18:39, 12. Mai 2009 (CEST)Beantworten

Zum Glück ist das lange her. Ich hoffe einfach ich muss nie wieer was mit C machen, danke trotzdem. Es lebe die OOP. --WissensDürster 18:54, 12. Mai 2009 (CEST)Beantworten

Turing vollständig?

[Quelltext bearbeiten]

Der Präprozessor ist schon ganz schön mächtig - ist die Sprache aber auch turing mächtig (soll ja wohl vollständig heissen arilou 18:31, 12. Mai 2009 (CEST))? (nicht signierter Beitrag von Kosmix (Diskussion | Beiträge) 13:04, 26. Apr. 2009 (CEST)) Beantworten

Nein. Informelle Begründung: es gibt keine (bedingten) Sprungbefehle ("Look Ma, no GOTO!" ;o). (Man kann übrigens sogar argumentieren, dass nicht einmal C selbst Turing-complete ist, da Zeiger (und auch Dateioffsets) nur einen endlichen Wertebereich fassen können.) --IrrwahnGrausewitz blah 00:11, 9. Sep. 2010 (CEST)Beantworten

Ersetzung

[Quelltext bearbeiten]

Das Wort "Ersetzung" klingt nicht nach einem guten Sprachstil. Wie wäre es z.B. mit "Bedingter Tausch" (nicht signierter Beitrag von 217.151.242.163 (Diskussion) 13:40, 31. Aug. 2011 (CEST)) Beantworten

Überall im Artikel? Sicher nicht! Es findet kein (Aus-)Tausch (exchange) sondern eine Ersetzung (replacement) statt. Der C-Standard ist da eindeutig. Was allerdings fragwürdig ist, ist die Abschnittsüberschrift "Bedingte Ersetzung". Der englische Terminus lautet conditional inclusion, also etwa "bedingte Einbeziehung", was im Deutschen noch mehr holpert als "bedingte Ersetzung". "Bedingte Übersetzung" träfe zwar immer noch leicht daneben, liest sich aber geschmeidiger und ist in deutschsprachiger Fachliteratur durchaus gebräuchlich. Meinungen? --IrrwahnGrausewitz blah 18:57, 31. Aug. 2011 (CEST)Beantworten
Keine schlechte Idee, Bedingte Übersetzung zu schreiben. Aber als Titel würde sich sicherlich auch conditional inclusion eignen.

--AndiixAndii (Diskussion) 15:22, 5. Jun. 2012 (CEST)Beantworten

C-Präprozessor in C++

[Quelltext bearbeiten]

Hallo Der C++ Präprozessor ist meines Erachtens nach (fast) komplett der selbe wie der C Präprozessor. Deshalb finde ich sollte in diesem Artikel auch der Präprozessor von C++ erwähnt werden. Wenn Unterschiede zwischen dem Präprozessor von C und C++ vorhanden sind, sollten sie auch aufgelistet werden.

--AndiixAndii (Diskussion) 15:19, 5. Jun. 2012 (CEST)AndiixAndiiBeantworten

"Gezielter Abbruch" usw. nicht mehr C-Präprozessor ...?

[Quelltext bearbeiten]

Die Anweisungen #error, #line und #pragma haben doch nichts mit dem C-Präprozessor zu tun - die werden (wenn ein getrennter cpp verwendet wird) zum Compiler durchgeschleift, wie auch alles andere, was mit # beginnt und nicht erkannt wird! Daher sollten diese Kommandos hier raus und zum C-Compiler ... --Haraldmmueller (Diskussion) 16:37, 12. Feb. 2018 (CET)Beantworten

Vereinfachung / Tokenizing

[Quelltext bearbeiten]

Bzgl. diesem Edit (Löschung).

Richtig, der Tokenizer ist eine Compiler-Stufe nach dem Präprozessor. Aber? Führt der Präprozessor nicht dennoch zumindest teilweise einige Schritte aus von


  1. Aufbereitung in Tokens: Der Präprozessor zerlegt die Eingabe in für die nachfolgenden Compiler-Phasen leichter zu verarbeitende Einheiten und Leerräume und ersetzt Kommentare durch Leerräume.


? Ich kenne mich mit dem C-Präprozessor jetzt nicht sooo im Detail aus, aber ich könnte mir denken, dass zumindest ein Teil dieser (gelöschten) Aussage richtig war...

--arilou (Diskussion) 13:20, 4. Sep. 2020 (CEST)Beantworten

Nein. Auch der Präprozessor arbeitet auf Token, nicht auf reinem Text. Darum kann er ja auch erkennen, ob der zu ersetzende Text sich z.B. innerhalb einer Zeichenkette befindet (dann halt nicht ersetzen, außer Trigraphen) oder nicht.
Der anschließend laufende Compiler führt wieder eine Aufbereitung in Token durch, die aber nicht genau die gleichen Token sind, da der Compiler z.B. zwischen Schlüsselwörtern und Identifiern unterscheiden kann usw.
--RokerHRO (Diskussion) 22:31, 14. Okt. 2024 (CEST)Beantworten

"Wikipedia ist keine Sammlung von Anleitungen..."

[Quelltext bearbeiten]

Der grösste Teil dieses Artikels ist löschwürdig, vgl. WP:WWPNI: "Wikipedia ist keine Sammlung von Anleitungen und Ratgebern. Es ist nicht Aufgabe der Wikipedia, zu erklären, wie man eine Redewendung, ein Gerät oder eine Software verwendet...". Hier braucht es dringend eine Überarbeitung, die dieses Rumpf-Handbuch zu einer enzyklopädische Darstellung des Lemmagegenstands eindampft. --Nico b. (Diskussion) 22:53, 12. Apr. 2023 (CEST)Beantworten