Warning bei isdigit
-
Ist isdigit hier möglicherweise ein Makro?
-
Wie kriege ich das raus, ob es ein Makro ist?
-
Indem du die <ctype.h> einmal nach dem Bezeichner "isdigit" durchsuchst
-
habe da sowas drin gefunden
#ifdef _PROTOTYPES
...
extern int _isdigit(int);
...
# else /* not _PROTOTYPES /
...
extern int _isdigit();
...
#endif / _PROTOTYPES */# define isdigit(__c) (__SB_masks ? (int)__SB_masks[__c] & _ISDIGIT \
: _isdigit(__c))
-
skoll1 schrieb:
# define isdigit(__c) (__SB_masks ? (int)__SB_masks[__c] & _ISDIGIT \
: _isdigit(__c))Da habe wir es doch - es ist ein Makro - und dort haben wir auch den Subscript, der dem Compiler auf den Magen geschlagen ist.
-
Hätte nicht ein Bibliothekshersteller, der den Standard int isdigit(int) erfüllen möchte, das Subscript auf int casten müssen um diese Warnung zu unterbinden? Sprich, kann man das als Fehler in der Implementierung betrachten?
-
Die Warnung ist schon berechtigt. Das Argument soll laut Standard ein int mit dem Wert eines unsigned char oder EOF sein. Mit einem char, der signed ist, können hier unerlaubte Werte auftreten.
-
Kann euch jetzt nicht mehr so ganz folgen. Was koennte ich machen, um 100% warnungsfreien Code zu erzeugen selbst mit der Compileroption -Wall? Der Compiler stoert sich nur noch an dieser Sache und an einer prinft Formatierung.
Die Zeile:
fprintf(nasbulk,"%+6x",*contic);
liefert folgende Meldung:
xpdset.c:36: warning:+' flag used with
%x' printf format
Ich vermute aber, das + bei %+6x ist einfach ueberfluessig, oder was koennte die Absicht gewesen sein.
-
skoll1 schrieb:
Kann euch jetzt nicht mehr so ganz folgen. Was koennte ich machen, um 100% warnungsfreien Code zu erzeugen selbst mit der Compileroption -Wall? Der Compiler stoert sich nur noch an dieser Sache und an einer prinft Formatierung.
Du könntest deine Variable definieren als [c]unsigned char line[256];[/c]
Die Zeile:
fprintf(nasbulk,"%+6x",*contic);
liefert folgende Meldung:
xpdset.c:36: warning:+' flag used with
%x' printf format
Ich vermute aber, das + bei %+6x ist einfach ueberfluessig, oder was koennte die Absicht gewesen sein.Eigentlich schreibt %x vorzeichenlose Zahlenwerte, da sind irgendwelche Vorzeichenkennungen überflüssig - %6x sollte ausreichen.
-
*edit* auch einem Mod passieren gelegentlich Doppelposts