Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Ein Weitere vorteil von C ist meiner Meinung nach, dass durch das fehlende Klassenkonzept die Codegeneratoren sogar noch einfacher sein sollten.
Für mich an seiner Stelle wäre C++ kein Mehrwert. Das fällt dadurch schon auf, dass man sich anscheinend auf Templates versteifen muss und keine Generics implementieren kann - ich wüsste zumindest nicht wie.
Ein Weitere vorteil von C ist meiner Meinung nach, dass durch das fehlende Klassenkonzept die Codegeneratoren sogar noch einfacher sein sollten.
Aber rein aus Codetransformationssicht halte ich für C++ so ziemlich das schwierigste Ziel, was man sich an Land ziehen kann. Wie gesagt, es wird schon gutee Gründe geben, die ich vielleicht auch gar nicht sehe, warum nach C und nicht C++ generiert wird.
Bestes Beispiel wäre für mich andere Konstruktoren innerhalb derselben Klasse aufrufen. Ich weiß, es ist im Standard, aber ich bin der Meinung der Microsoft-Compiler kann das nicht.
Was muss man tun, wenn dieses Feature durch die "Zielsprache" nicht 1:1 abbildbar ist? Man muss einen Workaround schreiben und das ist an der stelle doch total blöd. Man müsste jegliche Konstruktorinhalte in private Methoden auslagern, keine Initialisierungslisten nutzen, damit man solchen funktionalen Code bekommt. Und das ist doch doof. In C ohne Klassen oder auch C++ ohne Klassen wäre das mit einem einheitlichen Konzept ziemlich simpel umzusetzen. Ich bin der Meinung da ist dann auch der Generator einfacher, weil man weniger Sonderfälle hat. Und die nerven richtig, egal was man generiert
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (01.01.2014, 14:14)
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// === XieXie code: === flags Flags { Flag0 Flag1 Flag2 } flags TestFlags { Foo Bar Blub } flags LetterFlags inherit Flags, TestFlags { A B C } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
// === Generierter C++ code: === //! Flags flags enumeration. struct Flags { // --- Auto-generated flags --- // typedef unsigned char DataType; static const DataType None = 0; static const DataType All = ~0; // --- Custom flags --- // static const DataType Flag0 = (1 << 0); static const DataType Flag1 = (1 << 1); static const DataType Flag2 = (1 << 2); }; //! TestFlags flags enumeration. struct TestFlags { // --- Auto-generated flags --- // typedef unsigned char DataType; static const DataType None = 0; static const DataType All = ~0; // --- Custom flags --- // static const DataType Foo = (1 << 0); static const DataType Bar = (1 << 1); static const DataType Blub = (1 << 2); }; //! LetterFlags flags enumeration. struct LetterFlags { // --- Auto-generated flags --- // typedef unsigned short int DataType; static const DataType None = 0; static const DataType All = ~0; // --- Custom flags --- // static const DataType Flag0 = (1 << 0); static const DataType Flag1 = (1 << 1); static const DataType Flag2 = (1 << 2); static const DataType Foo = (1 << 3); static const DataType Bar = (1 << 4); static const DataType Blub = (1 << 5); static const DataType A = (1 << 6); static const DataType B = (1 << 7); static const DataType C = (1 << 8); }; |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »poitroae« (03.01.2014, 15:33)
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sacaldur« (16.01.2014, 08:34)
Werbeanzeige