RE: c: pøetypování - skr

Miroslav Draxal evik na volny.cz
Neděle Leden 13 15:09:23 CET 2019


Používám ještě 1.45. O té 2.xx to vím.

_KontrolaDataResult_ KontrolaDataResult;
return(KontrolaDataResult.value = 0x19;
illegal conversion between types
unsigned char -> union S358

_KontrolaDataResult_ KontrolaDataResult;
KontrolaDataResult.value = 0x19;
return(0x19);
illegal conversion between types
int -> union S358

To enum mělo být skutečně union. Velký překlep.

Jak píšete, že překladač udělal vlastně to, co jsem mu řekl. Máte pravdu. Občas se divím, jak dokáže zoptimalizovat to co po něm chci a pak zase koukám jako blázen, jak jednoduchou věc přeloží složitě. Tak mu chci napovědět jak na to.
Míra

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jan Waclawek
Sent: Sunday, January 13, 2019 1:05 PM
To: HW-news
Subject: Re: c: pøetypování - skr

[preposielam]

Dobry den,

v texte.


typedef enum {

               uint8_t value;

               struct {

               unsigned prvniBit :1;
               unsigned druhyBit :1;

               };

}_KontrolaDataResult_ ;

: uz som sice do C-cka dlhsie nepozrel, tak tejto konstrukcii velmi
nerozumiem. Ta
: konstrukcia  typedef enum je pre mna nezrozumitelna. Keby tam bol
union resp. namiesto
: enum prazdne miesto, tak by som tomu rozumel... Ale takto len
typujem, ze tam ma byt
: union... A ten je optimalizovany dobre.



_KontrolaDataResult_ pokus(void){

// v podprogramu je cca 10x

_KontrolaDataResult_ KontrolaDataResult;

KontrolaDataResult.value = 0x19;

return KontrolaDataResult;

}



Pokud na to kouknu do asm, dost blbì to tam je optimalizovaný, optimalizace
všechny zapnutý


: Moja otazka, ktoru verziu kompilatora pouzivate? v1.xx alebo v2.xx?!
:
: Ak sa zacitate do readme fileov ku v2.xx, tak tam taka mudra poznamka
: ku "optimization" v duchu, ze nasledujuca verzia bude lepsia. Zrejme
dôsledok toho, ze
: mplabx a xc8 ma uz byt pre vsetky mcu od microchipu... Teda je
otazka ci novy xc8 bude
: skor v duchu klasiky HiTech alebo pojde cestou GCC...


!            _KontrolaDataResult_ KontrolaDataResult;

!            KontrolaDataResult.value = 0x19;

0x7D2E: MOVLW 0x19

0x7D30: MOVWF KontrolaDataResult_2242, ACCESS

!            return KontrolaDataResult;

0x7D32: MOVF KontrolaDataResult_2242, W, ACCESS

0x7D34: RETURN 0

urobi len to co ste mu prikazal....


prostì to nehodí klasicky

RETLW 0x19


: no skuste
:
: return(KontrolaDataResult.value = 0x19)
:
: alebo
:
: KontrolaDataResult.value = 0x19;
: return(0x19);


Prajem pekny den.

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list