va_arg

Milan B. milan na bastl.sk
Pátek Červenec 22 21:31:16 CEST 2016


Bude to takto nejako: Najmensi povoleny typ je nativna sirka slova - 
vlastne najmensi typ ktory sa da ulozit do zasobnika, co je v C (>=16 
bitove platformy) vlastne int

Kazdy 8-bitovy byte, ktory je prenasany ako parameter funkcie, je 
ulozeny v zasobniku ako nativne slovo. Takze zrejme spravne bude:

sendData[index++] = (uint8_t)va_arg(fPar, int);

Odporucam pozriet "man va_arg" (trebars tu: 
http://linux.die.net/man/3/va_arg)  - presne tento pripad je uvedeny v 
priklade na konci

-m-

On 22. 7. 2016 21:08, Pavel Hudecek wrote:
> Dobrý den všem,
>
> mějme funkci:
>
> void i2cSend(uint8_t adr, uint8_t bytes, ...) {
> va_list fPar;
> (....)
> sendData[index++] = va_arg(fPar, uint8_t);
> (....)
> }
>
> Na řádku sendData... vznikl následující warning a poznámky:
>
> warning: 'unsigned char' is promoted to 'int' when passed through '...'
> note: (so you should pass 'int' not 'unsigned char' to 'va_arg')
> note: if this code is reached, the program will abort
>
> Abych pravdu řekl, vůbec nevím co si o tom mám myslet. Znamená to, že 
> va_arg neumí unsigned char a že bude argumenty žrát po dwordech, nebo 
> že stačí, když před va_arg dám (uint8_t) a jinak bude vše OK?
>
> Díky,
> PH
> _______________________________________________
> 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 ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3810 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160722/ac8a66f6/attachment.bin>


Další informace o konferenci Hw-list