va_arg

Pavel Hudecek edizon na seznam.cz
Sobota Červenec 23 12:42:31 CEST 2016


Protože typické použití je, že se posílá 1 nebo 2 bajty a s polem by to bylo 
nepraktické, ale občas možná bude potřeba poslat pole.

sd[index++]:
A nebude vadit, když bych pak ve druhém případě sd změnil na pole jinde?

PH

-----Původní zpráva----- 
From: Jaroslav Buchta
Bude to IMHO zbytecne narocne na zasobnik, to nemuzete ty bajty predat
jako ukazatel na pole a pocet prvku???
proc nepouzivate rovnou sd[index++] = ... v prvnim pripade ?
Pokud neni potreba setrit pameti, tak bych rekl OK.

Dne 23.07.2016 v 11:26 Pavel Hudecek napsal(a):
> Díky za podrobné vysvětlení.
>
> Takže teď tam mám:
>
> uint8_t sd[10];
> uint8_t *sendData;
> (...)
> sendData=sd;
> (...)
> sendData[index++] = (uint8_t)va_arg(fPar, uint32_t);
>
> Funguje a negeneruje warningy.
>
> A o kousek dál, kde chci přenášet pole, na které byl předán pointer, je:
>
> sendData=(uint8_t *)va_arg(fPar, uint32_t);
>
> Taky funguje bez protestů.
> Je to tak správně, nebo je v tom nějaký potenciální zádrhel? 



Další informace o konferenci Hw-list