kein Warning bei abs(long int)

Gast #1773073
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..
Persönliche Seite #1773135
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)
Gast #1773312
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 :-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren