Re: Záhada v C -Vyřešeno a otázky

Petr Labaj labaj na volny.cz
Neděle Leden 24 20:24:16 CET 2021


Ale to pole je přece konstantní adresa. Co na ní může být volatile?

Mějme program:
int main (void)
{
volatile int pole[4];
         pole=4;
         return;
}

Tak překlad samozřejmě skončí chybou, protože to "pole" je fixní adresa.
a.c:6:6: error: assignment to expression with array type
   pole=4;
       ^

PL

*************************


Dne 24.1.2021 v 19:25 Pavel Hudecek napsal(a):
>
> Tady se jedná o pole jménem pole, tak je to trochu matoucí:-)
>
> Prostě jsem několikrát narazil na tvrzení, že když napíšu
>
> *volatile uint8_t pole**[10];*
>
> tak prý dostanu volatile pointer a obyčejná „nevolatile“ data.
>
> Tak jsem se chtěl ujistit, že je to blbost, stejně jako jsem se 
> dozvěděl je blbost podobné tvrzení, že když napíšu
>
> *volatile uint8_t a=0, b=0, c=0;*
>
> prý bude volatile jen a
>
> Ale svět se naštěstí točí logickým směrem a tak jsou volatile všechny 
> prvky pole a všechny proměnné v jedné deklaraci.
>
> Takže tím bych to považoval za vyřešené:-)
>
> PH
>
> *Od: *Petr Labaj <mailto:labaj na volny.cz>
>
> Co by to mělo znamenat, že je volatile pole?
>
> Pole je snad pole, má svou fixní adresu. Pokud chci adresu měnit, tak to
>
> udělám jako ukazatel a ne jako pole.
>
> Nebo něco chápu blbě?
>
> PL
>
> ************************
>
> Dne 24.1.2021 v 14:05 Pavel Hudecek napsal(a):
>
> > Občas někde právě píšou, že volatile je pak vlastně jenom pole, ale ne
>
> > pole[n], což by bylo dost na ...
>
>



Další informace o konferenci Hw-list