va_arg

Josef Štengl ok1ced na nagano.cz
Pondělí Červenec 25 12:35:56 CEST 2016


Nepraktické v čem? Když ukládáte to do pole, takže stejně by byl použit pointer a je jedno jestli ho předám funkci v 
registru nebo registr zkopíruji na adresu.

Jedině nutnost použit extra argumentu pro pole. Ale téměř vše je lepší (snažší) než použít proměnnou velikost argumentu u 
funkcí :-)


Dne 23.7.2016 v 12:42 Pavel Hudecek napsal(a):
> 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?
>
> _______________________________________________
> 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