Hi zusammen !
Ich habe ein c++ Programm geschrieben, welches sich auch fehlerfrei
übersetzen lässt. (gcc png.cpp -lgd)
-------------------------snip---------------------
/* Bring in gd library functions */
#include
* Martin Knipper [Sun, 16 Dec 2001 15:08:56 +0100]:
int main() {
<pingelig> Nach ISO C++ ist int main(int, char **) die einzig gültige Definition für main! Durch weglassen der Parameternamen kannst du ja schliesslich anzeigen, dass du die Parameter nicht brauchst. </pingelig>
char *s="Hallo Martin"; Mach daraus unsigned char *s="Hallo Martin";
Kommentiere ich die Zeile "gdImageString(im, gdFontLarge, 0, 0, s, white);" ein, erhalte ich den Fehler: png2.cpp: In function `int main()': png2.cpp:29: passing `char *' as argument 5 of `gdImageString(gdImage *, gdFont *, int, int, unsigned char *, int)' changes signedness
Vom Syntax her ist alles korrekt.
Nein ist es nicht! gdImageString erwartet als fünften Parameter einen 'unsigned char *', du übergibst aber einen 'char *'. Also ändert sich das Vorzeichen des Strings, was c++ zu Recht anmosert. Philipp PS. Die .sig habe ich jetzt mit Absicht gewählt :-) -- Wenn Zimmerleute ihre Häuser so bauen würden, wie Programmierer ihre Programme, wäre der erste daherkommende Specht das Ende der Zivilisation.
Am Sonntag, 16. Dezember 2001 15:08 schrieb Martin Knipper:
Hi zusammen !
Ich habe ein c++ Programm geschrieben, welches sich auch fehlerfrei übersetzen lässt. (gcc png.cpp -lgd)
[Sourcecode --- schnipp]
Kommentiere ich die Zeile "gdImageString(im, gdFontLarge, 0, 0, s, white);" ein, erhalte ich den Fehler: png2.cpp: In function `int main()': png2.cpp:29: passing `char *' as argument 5 of `gdImageString(gdImage *, gdFont *, int, int, unsigned char *, int)' changes signedness
Vom Syntax her ist alles korrekt. Ich habe mir mal den Sourcecode von webalizer angeschaut, die nutzen es genauso ... *versteh ich nicht*
Endet die Datei auf *.c, funktioniert es. Ist das denn wohl richtig so ?? Für eine Erklärung wäre ich sehr dankbar. Gruß Martin
participants (2)
-
Martin Knipper
-
Philipp Thomas