Forum: Compiler & IDEs kein Warning bei abs(long int)


von Adam (Gast)


Lesenswert?

Wieso gibt es kein Warning bei abs((int32_t) li[i])? Weil gcc-builtin?

Problem: Vergleich funktionierte nicht, weil ich ein int32_t mit abs() 
benutze.
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#gdb8c83badc195efc1229799391fececc

labs() gefunden:
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdlib.html#ge017047d6d0a688ccb622ff062dcd230

fabs gibt's auch..

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Adam schrieb:

> Wieso gibt es kein Warning bei abs((int32_t) li[i])? Weil gcc-builtin?

Vielleicht weil die betreffende Warnung in der gcc Kommandozeile per 
Option (1) ausgeschaltet ist.

Oder weil der Hersteller deiner Toolchain die betreffende Option zur 
Unterdrückung der Warnung mit einkompiliert hat. Dem kannst du 
nachgehen, wenn du dir die übergebenen Kommandozeilen anzeigen lässt 
(2).

(1) http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

Hier speziell die -Wconversion Option

"Warn for implicit conversions that may alter a value. This includes 
conversions ... to smaller types ..."

und die -Wtraditional-conversion

"Warn if a prototype causes a type conversion that is different from 
what would happen to the same argument in the absence of a prototype. 
This includes conversions ... changing the width or signedness of a 
fixed point argument except when the same as the default promotion."

(2) http://www.network-theory.co.uk/docs/gccintro/gccintro_75.html

-v Option (v für verbose)

von Adam (Gast)


Lesenswert?

Mhh, danke. Wird eigentlch nicht ausgeschaltet, -Wall ist Option der 
Wahl.

>avr-gcc -v
Using built-in specs.
Target: avr
Configured with: ../gcc-4.3.3/configure 
--enable-win32-registry=WinAVR-20100110 --with-gmp=/usr/local 
--with-mpfr=/usr/local --prefix=/c/Win
AVR --target=avr --enable-languages=c,c++,objc --with-dwarf2 
--enable-doc --disable-shared --disable-libada --disable-libssp 
--disable-nls -
-with-pkgversion='WinAVR 20100110' 
--with-bugurl='URL:http://sourceforge.net/tracker/?atid=520074&group_id=68108&func=browse';
Thread model: single
gcc version 4.3.3 (WinAVR 20100110)

Aber das Problem ist ja nun entdeckt und behoben (dank Warnung in einer 
anderen Funktion), daher lohnt es sich für mich nicht, das Verhalten mal 
in einem "testcase"  zu reproduzieren.
Aber wieder ein paar Schalter kennengelernt :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.