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