PROTON napisał(a):
Używasz char, czuli zmiennej z zakresu -128 do 127. Spróbuj unsigned char, wtedy będzie miała zakres od 0 do 255.
Nie trzeba używać unsigned char
Gdyby sobie autor kompilował w Eclipse to nie miałby żadnego warninga
Gdyby sobie autor kompilował w poprawnie skonfigurowanym AS też nie miałby warninga
a tak ? ... bez pojęcia o AS .... zabieramy się za kobyłę, której nawet nie potrafimy skonfigurować a później piszemy po internecie, że w kodach z Bluebooka są warningi albo że nie da się skompilować
Wyjaśnienie: ... dlaczego gdyby była kompilacja w Eclipse to nie byłoby warningów ? czary jakieś czy co ?
żadne czary - DOMYŚLNIE przy kompilacji w AVR GCC typ char zamieniany jest AUTOMATYCZNIE na unsigned char ! i warto to sobie zapamiętać
dlaczego jest domyślnie zamieniany ? ano dlatego żeby nie męczyć się pisaniem tego durnego słówka unsigned a widać to pięknie podczas pierwszej kompilacji projektu albo po jego CELAN'owaniu, oto przykład
Cytuj:
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF"main.d" -MT"main.d" -c -o "main.o" "../main.c"
Takie posunięcie wymusza oczywiście za sobą pewne ważne konsekwencje, bo wręcz nie zaleca się w takiej sytuacji NIGDZIE w kodzie stosować durnego
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
tylko sam typ
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
i znowu DLACZEGO ?
Ano dlatego, że większość wbudowanych w GCC funkcji operuje często na argumentach typu char (autorzy tych funkcji słusznie uznali, że każdy będzie kompilował sobie programy właśnie z tym przełącznikiem DOMYŚLNYM podkreślam
-funsigned-char No i jeśli teraz jakiś początkujący uparcie będzie stosował kocie "unsigned char" to się zdziwi, że przy wielu funkcjach dostaje warningi że mu się rodzaje typów argumentów nie zgadzają.... i często zamiast poczytać o przełącznikach kompilacji i o tym co tu piszę - to załatwia sprawę TYSIĄCAMI RZUTOWAŃ w kodzie - jawnych rzutowań np..... skoro ma warninga w takiej powiedzmy zmyślonej tu funkcji
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to gościu robi sobie:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
podobnie rzecz się ma ze wskaźnikami char wtedy ..... i cała kołomyja .....
W AS jak sobie coś ktoś pokiełbasi to ma wyłączony ten przełącznik domyślnej zamiany char na unsigned char no i później ma problemy
ale to nie jedyny kocie pułapki jakie czyhają w AS na takich początkujących co to jak im ktoś wmówi że Eclips jest nie dobry to go nawet nie dotknie ....
Ja tam uważam, że szczególnie dla początkujących zdecydowanie lepszy jest ECLIPSE a jak się człowiek nauczy już ... m.in tego o czym piszę ale jeszcze innych rzeczy (jak pracuje kompilator) to wtedy można sobie używać AS albo jeszcze czego innego co się żywnie podoba
------------------------ [ Dodano po: 6 minutach ]Jak widać proste rzeczy w AS urastają dla początkującego do jakichś KOSMICZNYCH problemów .... a w Eclipse o dziwo wszystko działa i się kompiluje. Dziwię się, jak można być tak upartym i pomimo to, że w Bluebooku piszę o Eclipse, że specjalnie przygotowuję kody działające pod Eclipse (cały workspace jest na DVD) to nie .... nawet taki początkujący nie spróbuje tylko idzie katować się AS