Code: Alles auswählen
#ifdef UNICODE
#define GetMessage GetMessageW
#else
#define GetMessage GetMessageA
#endif // !UNICODE
Macros are evil. q.e.d.
Code: Alles auswählen
#ifdef UNICODE
#define GetMessage GetMessageW
#else
#define GetMessage GetMessageA
#endif // !UNICODE
Der Compiler macht um die zwei oder drei Größenordnungen weniger Fehler als du. Um Überblick geht es ja überhaupt nicht. (Ich dachte btw immer, es sei gute Programmierung, dass man nicht erst den Quelltext einer Funktion analysieren muss um zu begreifen, was sie tut ...)Zudomon hat geschrieben:Noch dazu finde ich es nicht gut, dass der Compiler sich bei Templates (soweit ich das verstanden habe) den Quellcode für Typen, die ich reinstecke, dahin programmiert...
Du sagst also Copy&Paste ist OK solange der Compiler es gleich am Anfang macht, aber wenn ers später macht, dann nimmt dir das den Überblick!? Die Logik dahinter erschließt sich mir grad irgendwie überhaupt nicht :roll:Zudomon hat geschrieben:Mit einem Suchen/Ersetzen kann ich umgehen [...] Noch dazu finde ich es nicht gut, dass der Compiler sich bei Templates (soweit ich das verstanden habe) den Quellcode für Typen, die ich reinstecke, dahin programmiert [...]
Muss man nicht bei Templates bestimmte Richtlinien einhalten? Beim Define wird ja alles gnadenlos ersetzt und es ist egal, was man damit ersetzen lässt. Bei den Templates bezieht sich das doch nur auf die Datentypen, die man einem Container übergibt. Also ich finde schon, dass es da unübersichtlicher wird.dot hat geschrieben:Du sagst also Copy&Paste ist OK solange der Compiler es gleich am Anfang macht, aber wenn ers später macht, dann nimmt dir das den Überblick!? Die Logik dahinter erschließt sich mir grad irgendwie überhaupt nicht :roll:Zudomon hat geschrieben:Mit einem Suchen/Ersetzen kann ich umgehen [...] Noch dazu finde ich es nicht gut, dass der Compiler sich bei Templates (soweit ich das verstanden habe) den Quellcode für Typen, die ich reinstecke, dahin programmiert [...]
Mit Abstand dass Übelste was ich je gesehen hab. Ich hing damals einige Tage dran bis ich das gerafft habe. Warum man da die Verantwortlichen noch nicht kastriert hat ist mir schleierhaft. Die WINAPI ist allerdings eh der größte Scheiß, von daher ...dot hat geschrieben:Code: Alles auswählen
#ifdef UNICODE #define GetMessage GetMessageW #else #define GetMessage GetMessageA #endif // !UNICODE
Demnach gibts auch keinen Bedarf für C++ 11, so schnell, wie sie das implementieren...dot hat geschrieben:Dafür gibt es aber offensichtlich keinen Bedarf, sonst würden sies sofort implementieren. Und selbst wenn würde das nichts am Problem ändern, dass die WinAPI mit C90 kompatibel sein muss. Natürlich könnte man mit #ifdef __cplusplus was machen...aber wir kommen vom Thema ab ;)
Es geht mir nicht um C99 oder sonstwas, sondern um eine ordentliche Implementierung. Die grausamen Makros sind ja nur ein Teil der Grausamkeiten. Aber ja in gewisser Weise muss man einräumen, dass die WinAPI uralt ist und kompatibel bleiben muss.dot hat geschrieben:Naja, was wäre denn die Alternative? Bedenke, dass die WinAPI kompatibel zu C sein muss, wo es keine inline Functions gibt (C99 wird kaum unterstützt)...
Also ich fand es auch interessant und freue mich natürlich, dass es vielleicht garnicht so falsch ist, wie ich arbeite. Zumal ja auch Schrompf mal irgendwo gesagt hat, dass er auch einfach Arrays benutzt, wo dann eine Exist-Variable gesetzt wird, wenn da was benutzt wird.Alexander Kornrumpf hat geschrieben:Ja, ich fands auch total interessant. Und Zudomon wird sich bestätigt sehen :)
Das Ganze dann aber in eine Template-Klasse verpackt und mit Iterator-Interface versehen... ich glaube also, wir meinen dann doch unterschiedliche Herangehensweisen. Ich *mag* Objektorientierung. Klar, man kann es auch übertreiben, aber grundsätzlich ist die Welt mit OO eine bessere als ohne OO.Zudomon hat geschrieben: Zumal ja auch Schrompf mal irgendwo gesagt hat, dass er auch einfach Arrays benutzt, wo dann eine Exist-Variable gesetzt wird, wenn da was benutzt wird.
Hmm mein kleines 2D-RPG-Projekt hat schon 160k Zeilen. Allerdings lässt sich anhand von sowas ja nicht unbedingt auf Qualität oder Effektivität des Codes schließen. Ich hab aber in den letzten Jahren gemerkt, dass die beste Optimierung die Entfernung von Code ist. Vielleicht hab ich am Ende also weit weniger Codezeilen :DZudomon hat geschrieben:Bin mit Stonequest übrigens bei 25k Zeilen etwa. Wobei ich es ja generell besser finde, wenn das Programm schrumpft, aber leider wächst es schneller, als es kürzer wird...
Krass! Ich glaube, mein absolutes Maximum lag bisher bei 60k... bei "Edna bricht aus" wird im Spiel gesagt, dass der erste Akt schon 90k Codezeilen hat. Ich weiß nur nicht, ob das Spass war. Ich kann mir allerdings nicht erklären, warum da so viel Code bei rumkommt. Zumal bei mir noch viel redundanter Code ist... wobei es nun 26k bei mir sind...BeRsErKeR hat geschrieben:Hmm mein kleines 2D-RPG-Projekt hat schon 160k Zeilen. Allerdings lässt sich anhand von sowas ja nicht unbedingt auf Qualität oder Effektivität des Codes schließen. Ich hab aber in den letzten Jahren gemerkt, dass die beste Optimierung die Entfernung von Code ist. Vielleicht hab ich am Ende also weit weniger Codezeilen :DZudomon hat geschrieben:Bin mit Stonequest übrigens bei 25k Zeilen etwa. Wobei ich es ja generell besser finde, wenn das Programm schrumpft, aber leider wächst es schneller, als es kürzer wird...
Der erste Akt soll 90k Codezeilen haben? Wieso gibt es überhaupt Akt-Code und dann noch so umfangreich? Ist der komplett hardcoded? Kein Wunder, dass dann so viel Code entsteht...Zudomon hat geschrieben:Krass! Ich glaube, mein absolutes Maximum lag bisher bei 60k... bei "Edna bricht aus" wird im Spiel gesagt, dass der erste Akt schon 90k Codezeilen hat. Ich weiß nur nicht, ob das Spass war. Ich kann mir allerdings nicht erklären, warum da so viel Code bei rumkommt. Zumal bei mir noch viel redundanter Code ist... wobei es nun 26k bei mir sind...BeRsErKeR hat geschrieben:
Hmm mein kleines 2D-RPG-Projekt hat schon 160k Zeilen. Allerdings lässt sich anhand von sowas ja nicht unbedingt auf Qualität oder Effektivität des Codes schließen. Ich hab aber in den letzten Jahren gemerkt, dass die beste Optimierung die Entfernung von Code ist. Vielleicht hab ich am Ende also weit weniger Codezeilen :D
Sorry fürs OT, aber damit ist Data-Driven-Architecture offiziell eines meiner neuen Lieblingsbuzzwords fürs Bullshit Bingo.Artificial Mind hat geschrieben: [...] Sollte man nicht bei Spielen mit viel (unterschiedlichem) Inhalt eher auf eine Data-driven Architektur für die "Akte" oder ähnliches setzen? [...]
Zählt das Auslagern sämtlichen Nicht-Kern-Codes auch noch zu Data-Driven-Architecture oder heißt das dann schon wieder anders?Lynxeye hat geschrieben:Sorry fürs OT, aber damit ist Data-Driven-Architecture offiziell eines meiner neuen Lieblingsbuzzwords fürs Bullshit Bingo.Artificial Mind hat geschrieben: [...] Sollte man nicht bei Spielen mit viel (unterschiedlichem) Inhalt eher auf eine Data-driven Architektur für die "Akte" oder ähnliches setzen? [...]
Artificial Mind hat geschrieben:@Berserker: 160k Zeilen in welcher Sprache, mit/ohne Leerzeilen/Kommentare, besteht der Content auch aus Codezeilen? Interessiert mich mal^^