Portál AbcLinuxu, 10. května 2025 01:37
avr-gcc -WallSkumanim man stranky som zistil, ze nie je all ako all a teda
-Wall
nezapina vsetky warning hlasky. Dalsim skumanim som sa dopracoval k nasledovnemu:
avr-gcc -Wall -Wextra -Wpedantic -std=c99 -g -O2 -mmcu=atmega328p -o project.elf project.cNa nete sa v niektorych clankoch spomina
-Weverything
, ale tento prepinac nepozna ani man stranka, ani samotne gcc (avr-gcc).Řešení dotazu:
-Wswitch-default
(switch nema "default:"). Su casti kodu, kde to moze byt chyba (ak sa nieco podla switch vykonava), ale aj nemusi. V mojom pripade mam switch na par miestach v kode, aby len pri specifickych situaciach upravil hodnoty pred vypisom na display / seriovu linku. Na tom mieste mi to nadavalo, ze nemam default:
pre switch. To iste dalsich niekolko warning skupin. Po tom, co som sa stym "pohral" som sa vratil k povodnemu:
avr-gcc -Wall -Wextra -Wpedantic -std=c99 -g -O2 -mmcu=atmega328p -o project.elf project.cPodla "Ovrscout" navrhu som testol aj cppcheck. Samotny cppcheck ma podporu pre AVR, ale je potrebne ho trosku doladit. Aktualne mam v build scripte toto:
CPPcheck_opts=" --enable=all \ --library=/usr/share/cppcheck/cfg/avr.cfg \ -I /usr/lib/avr/include/ -I /usr/lib/gcc/avr/4.8.1/include/ --std=c99 \ -D __AVR_ATmega328P__" cppcheck --check-config ${CPPcheck_opts} project.c echo cppcheck ${CPPcheck_opts} project.c echofyi: samotny kod testujem ako "black box" po buildnuti dalsimi scriptami.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.