RE: C: ja přiřadit ukazateli pevnou adresu v paměti?
Miroslav Draxal
evik na volny.cz
Sobota Leden 12 23:47:15 CET 2019
Tak jsem to zkusil a výsledek je , že to nepřeloží
! volatile uint8_t *pPokus0;
! pPokus0 = (volatile uint8_t*) 20;
! _KontrolaDataResult_ KontrolaDataResult;
! if (*pKontrolovanyMesic > DateTime.Mesic) {
0x7D82: RCALL 0x7E6A
0x7D84: MOVF POSTINC2, W, ACCESS
-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Miroslav Mraz
Sent: Saturday, January 12, 2019 8:59 PM
To: hw-list na list.hw.cz
Subject: Re: C: ja přiřadit ukazateli pevnou adresu v paměti?
Ten typ přetypování by měl být úplně stejný jako má deklarace ukazatele.
Zkuste
volatile uint8_t *pPokus0;
pPokus0 = (volatile uint8_t*) 0;
i když takovýto typ ukazatele bude (nebo by měl být) konstantní, tedy
měl by být při deklaraci zároveň definován (inicializován).
volatile uint8_t * const pPokus0 = (volatile uint8_t * const) 0;
pak už jeho hodnotu nemůžete měnit (např. pPokus0++ je chyba), ale to
zřejmě ani není žádoucí.
Mrazík
Dne 12. 01. 19 v 17:45 Miroslav Draxal napsal(a):
> pPokus = (uint8_t *)0 ; // jsem zkoušel
>
> pPokus = (void *)0; // jsem nezkoušel
>
> jde o XC8
>
> volatile uint8_t *pPokus0;
>
> volatile uint8_t *pPokus1;
>
> volatile uint8_t *pPokus2;
>
> pPokus0 = (uint8_t*) 1;
>
> pPokus1 = (void*) 2;
>
> pPokus2 = 3;
>
> zkompiluje jako
>
> ! volatile uint8_t *pPokus0;
>
> ! volatile uint8_t *pPokus1;
>
> ! volatile uint8_t *pPokus2;
>
> ! pPokus0 = (uint8_t*) 1;
>
> ! pPokus1 = (void*) 2;
>
> 0x7C5E: MOVLW 0x2
>
> 0x7C60: MOVWF pPokus1, ACCESS
>
> 0x7C62: CLRF c, ACCESS
>
> ! pPokus2 = 3;
>
> 0x7C64: MOVLW 0x3
>
> 0x7C66: MOVWF value, ACCESS
>
> 0x7C68: CLRF 0x4A, ACCESS
>
> Z toho jde vidět, že
>
> pPokus0 = (uint8_t*) 1; //nezkompiluje,
>
> pPokus1 = (void*) 2; // je vítěz
>
> pPokus2 = 3; // tady upozorňuje.
>
> Takže pPokus1 = (void*) 2; je vítězem. Díky, Míra
>
_______________________________________________
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