Compiler-Warnung: comparison unsigned with signed
-
Hallo,
ist es eigentlich richtig, dass der C-Compiler eine Warnung ausgibt, wenn man eine Funktion schreibt mit einem Funktionsparameter "char daten" und innerhalb dieser Funktion die daten mit einem define-Wert verglichen wird, der 0 oder Negativ ist?
Die Funktion wird bis jetzt noch nirgends aufgerufen im Programm.
#define DEFINE_WERT -1 void fktsname (char daten) { if(daten == DEFINE_WERT) //mach irgendwas }
Die Compiler-Warnung ist:
"pointless comparison of unsigned integer with a negative constant"Gruß
derTim
-
kann es sein, dass bei dir 'chars' unsigned sind? das kommt schon mal vor. mach doch aus dem define: #define DEFINE_WERT (char)-1
-
ruf doch mal fktsname(255) auf
-
#define-freak schrieb:
kann es sein, dass bei dir 'chars' unsigned sind? das kommt schon mal vor. mach doch aus dem define: #define DEFINE_WERT (char)-1
Macht das Sinn?
Er kann ja keine negativen chars erzeugen, tatsächlich vergleicht er dann mit 255. Statt zu casten wär' gleich int zu nehmen sauberer. Auch möglich: Testen, ob der Compiler signed char anbietet.