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