OT: c: mismatched comparison
Jan Waclawek
konfera na efton.sk
Úterý Červenec 30 11:55:42 CEST 2024
[preposielam]
Dobry den,
nechcem byt za hnidopicha, ale skusil som ten Vas kod strcit do svojho
aktualneho testovacieho zdrojaku a kupodivu ziadny warning sa mi
neobjavil... Ta inicializacia a incrementy su kvoli optimalizacii, aby to
kompilator nevyhodil z kodu.
XC8 ver.2.46, PIC18F47k42
uint8_t RucneCisloSekce = 9;
uint8_t CisloSekce = 10;
RucneCisloSekce++;
CisloSekce++;
if (RucneCisloSekce == (CisloSekce - 1u)) {
NOP();
}
Takze ako som uz pisal, treba tam doplnit v podmienke
if (RucneCisloSekce == ((CisloSekce - 1u) & 0x00FF) )
a potom sa to zacne tvarit ako uint8 premenne a teda sa zacne na
podmienku pozerat Vasimi ocami, tak ako ste chcel.
Bez toho & 0x00FF automaticky rozsiri obidve premenne na typ int a
prevedie odcitanie int 1 a urobi porovnanie dvoch int. Da sa to
dohladat v listingu. Namiesto cca. piatich instrukcii je tych
instrukcii vela... To je to C99.
A.
Další informace o konferenci Hw-list