Kompilierungsfehler bei SDL-Tutorial



  • Hallo, über die deutsche SDL Seite bin ich auf die imo interessanten Beispiele von Olofson gestoßen. Ich wollte ein wenig mit den Parallax-Codes experimentieren, bekomme aber nicht mal seinen Original-Code kompiliert.

    Der Compiler gibt folgende Fehlermeldung:

    error: initializer string for array of chars is too long

    und verweist auf folgende Stelle: (Auszug)

    #define	MAP_W		16
    #define	MAP_H		16
    
    typedef char map_data_t[MAP_H][MAP_W];
    
    map_data_t foreground_map = {
    /*	 0123456789ABCDEF */
    	"3333333333333333",
    	"3   2   3      3",
    	"3   222 3  222 3",
    	"3333 22     22 3",
    	"3       222    3",
    	"3   222 2 2  333",
    	"3   2 2 222    3",
    	"3   222      223",
    	"3        333   3",
    	"3  22 23 323  23",
    	"3  22 32 333  23",
    	"3            333",
    	"3 3  22 33     3",
    	"3    222  2  3 3",
    	"3  3     3   3 3",
    	"3333333333333333"
    };   // <------HIERAUF ZEIGT DER FEHLER
    

    http://olofson.net/examples.html

    Wie kriegt man diese Initialisierung hin? Unter Windows (*hust*) kann man ja die Binarys starten und die imo guten Ergebnisse bewundern.



  • Da Strings nullterminiert sind, braucht jeder ein Zeichen mehr als tatsaechlich zur Verfuegung steht.
    Du kannst versuchen, "MAP_W" einfach um 1 zu erhoehen was aber evtl Auswirkungen auf den restlichen Code haben wird.



  • Thx, klappt. Aber ich kann nicht verstehen, daß jemand solchen Code ungetestet ins Netz stellt. Und warum stoße immer ich auf solch groben Unfug? 😉



  • XHansWurstX schrieb:

    Thx, klappt. Aber ich kann nicht verstehen, daß jemand solchen Code ungetestet ins Netz stellt. Und warum stoße immer ich auf solch groben Unfug? 😉

    Vielleicht weil unterschiedliche Compiler, den C++-Standard unterschiedlich interpretieren. Oder Anders gesagt: Vielleicht klappts auf dem einen Compiler, aber auf dem anderen nicht.


Anmelden zum Antworten