warning: pointer targets in initialisation differ in signedness
-
Moien!
Kann wer damit was anfangen:
warning: pointer targets in initialisation differ in signednessSowas wird angemeckert:
static uchar* de[] = { "hallo und so, ne" };
Meckern tut die Anjuta IDE. Vermutlich weil Adressen intern signed sind?
uchar ist ein getypedefter unsigned char.
-
^^char ist bei dir wahrscheinlich 'signed' (ist sehr oft so, bei einigen compilern kann man einstellen, ob's vorzeichnbehaftet sein soll oder nicht), ein pointer auf 'ne stringkonstante ist immer vom typ 'char*', was sich mit deinem 'uchar*' beisst. es meckert übrigens der compiler, nicht die IDE.
-
Meckern tut höchstwahrscheinlich nicht die IDE, sondern dein Compiler. Der C-Typ des Ausdrucks auf der rechten Seite ist char*, wobei char je nach Compilereinstellung vorzeichenbehaftet ist oder auch nicht (unabhängig davon sind char, signed char und unsigned char drei verschiedene Typen). Der "semantische" Typ von dem Ausdruck ist übrigens const char*, denn der Wert der einzelnen Zeichen lässt sich nicht ändern.
-
Superlexx schrieb:
(unabhängig davon sind char, signed char und unsigned char drei verschiedene Typen).
wenn das die antiken griechischen philosophen wüssten (die mit ihrem 'gesetz vom ausgeschlossenen dritten'), würden sie allesamt in ihren gräbern rotieren.
-
jaund was mach ich nu? das sind so viele warnungen das geh auffn sack!
-
signedness n00b schrieb:
jaund was mach ich nu?
[b]char[/b]* de[] = { "hallo und so, ne" };
-
+fricky schrieb:
[b]char[/b]* de[] = { "hallo und so, ne" };
[b]const char[/b]* de[] = { "hallo und so, ne" };
-
frage mich schon, wieso adressen negativ sind.
-
o0 schrieb:
frage mich schon, wieso adressen negativ sind.
sind sie ja nicht, aber das, worauf so'n pointer zeigt (z.b. char) kann negativ sein.
-
wenn ich das char* tu, dann fliegen mir funktionen wie isspace und co. bei manchen compilern um die ohren.
-
signedness n00b schrieb:
wenn ich das char* tu, dann fliegen mir funktionen wie isspace und co. bei manchen compilern um die ohren.
kann nicht sein. 'isspace' will 'nen 'int' haben, also geht auch char.
-
das sachmal microsoft, wenn ich
char c = 128; printf("%d",isspace(c));
kompilieren will, kommt die nette message box mit dem crashsound:
Debug Assertion Failed!
Expression: (unsigned)(c+1) <=256
-
bezieht sich auf die express version visualc++ 2008
-
^^ signed char geht doch nur von -128 bis 127. wahrscheinlich meckert er, weil 128 zu gross ist. im release-modus sollte 'isspace' aber jeden int-wert schlucken. oder haste <ctype.h> nicht inkludiert?
-
isspace kann mit deinen negativen Werten nichts anfangen und sagt es dir auf diese Weise.
-
Superlexx schrieb:
isspace kann mit deinen negativen Werten nichts anfangen und sagt es dir auf diese Weise.
ich hab' gerade (vs.2005, debug-mode) `printf("%d",isspace(-1));
gemacht. geht ohne probleme.
printf("%d",isspace(-2));` will aber nicht. wer ist jetzt doof, ich oder mickeysoft?
-
-1 == EOF
-
??????? schrieb:
-1 == EOF
ok, ich bin dööfer als microsoft. aber nur ein ganz kleines bisschen.
-
nützt mir ja alles nix. ich parse ne datei und wenn da son zeichen drin ist, dann machts KAA-BUMM
-
willsagen, die zeilen der datei stecken in char-strings!