[Allegro] Allegro kompilieren
Thomas Berger
ThB at Gymel.com
Sa Okt 31 12:58:31 CET 2015
Lieber Herr Fischer,
> ich schaue mir mal den Quellcode von Allegro (konkret atools) mit
> meiner Entwicklungsumgebung Xcode (Mac OS) an.
> Wie nicht anders zu erwarten, erscheinen erst einmal reichlich Fehlermeldungen und Warnungen.
Aber welchen Compiler benutzen Sie? Vermutlich LLVM, aber in der
gcc- oder in der clang-Auspraegung? Und fuer welche Plattform
(ich gehe davon aus, dass nativ und fuer "Windows-Emulation"
geboten wird?)
> Dabei sind ein Großteil der Fehlermeldungen darauf zurückzuführen,
> dass der Rückgabewert bei Funktionen nicht definiert ist (setze ich auf
> void) und einige Funktionen implizit definiert sind (dafür füge ich die
> Deklaration am Anfang des Programms ein). So lassen sich alle Fehler
> erst einmal beheben.
In anderen Umgebungen sind das keine Fehler, insbesondere die
fehlenden Deklarationen scheinen dort vorhanden. "Unterstuetzt"
werden zumindest gcc und MSVC, d.h. wenn Sie da etwas ergaenzen
muessen, liegt es entweder daran, dass #DEFINES von Ihnen nicht
sinnvoll vorbesetzt wurden (leider entsprechen die Weichen in
den allegro-Programmen irgendwelchen Gepflogenheiten von 1894,
die nicht den heutigen Mechanismen entspechen, Compiler zu
erkennen, vgl. < http://sourceforge.net/p/predef/wiki/Home/ >.
Bzw. mit dem Compiler ist es ja nicht unbedingt getan, es geht
ja auch um die verfuegbare Runtime-Bibliothek (also glibc bzw.
MSVCRT oder MFC) und (aber eher selten) auch ums Betriebssystem.
> Allerdings bleiben ca. 600 Warnungen, die Masse davon geht darauf
> zurück, dass mein System unter einem "char" ein signed char versteht,
> während die Braunschweiger Entwicklungsumgebung wohl von unsigned char
> ausgeht (oder sich nicht daran stößt).
>
> Hat jemand Erfahrung damit und einen Hinweis, wie ich damit umgehen
> könnte? Gibt es vielleicht in C so etwas wie einen allgemeinen Schalter,
> der festlegt, dass in diesem Projekt alle char als signed zu gelten haben?
Herr Eversberg hat bestimmt Erfahrungen darin, alle Compiler-Warnungen
abzuschalten, ob fuer XCode weiss ich allerdings nicht.
Der letzte, im September gefundene Bug von import.exe beruhte auf
einer Verwechslung von signed mit unsigned char's (also von char
mit CHAR), mit solchen Warnungen ist nicht zu spassen, da haben Sie
recht.
> (Das kommt mir unwahrscheinlich vor da im Programm zusätzlich explizit ein Typ
> #define CHAR unsigned char
> festgelegt wird.)
>
> Schon so etwas simples wie
> strcpy(dbn,"");
> macht da Probleme:
> Passing 'unsigned char []' to parameter of type 'char *' converts
> between pointers to integer types with different sign.
Auch hier wieder: manche Cast-Einfuegung waere wohl insgesamt eine
Verbesserung, andere sind evtl. nur fuer Ihren Compiler empfehlenswert
und sollten in #ifdef's gekapselt werden.
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro