RE: C: ja přiřadit ukazateli pevnou adresu v paměti?
Miroslav Draxal
evik na volny.cz
Sobota Leden 12 17:45:31 CET 2019
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
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Jaroslav Buchta
Sent: Saturday, January 12, 2019 5:19 PM
To: hw-list na list.hw.cz
Subject: Re: C: ja přiřadit ukazateli pevnou adresu v paměti?
Nevim, co mate za prekladac, ale zkuste nasledujici:
pPokus = NULL;
pPokus = (void *)0; // coz je vetsinou to same
pPokus = (Uint8_t *)0 ; // fakt velke U?
Dne 12.01.2019 v 17:11 Miroslav Draxal napsal(a):
Dobrý den ve spolek.
Dnes jsem si uvědomil, že neumím přiřadit ukazateli adresu, která je mnou pevně daná jako l hodnota, aby mě překladač nevaroval
„illegal conversion of integer to pointer“
Je to pouze z ladících účelů
Čili
Uint8_t *pPokus;
pPokus = 0x00; // tady varuje, čili adresa 0x00 v paměti
Jak by to mělo být správně zapsané?
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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20190112/76a8f93c/attachment-0001.html>
Další informace o konferenci Hw-list