va_arg

Pavel Hudecek edizon na seznam.cz
Pátek Červenec 22 21:38:42 CEST 2016


Ono to ve skutečnosti má fungovat tak, že když je bytes<10, tak se očekává 
několik parametrů (typicky 1-2) a pro >10 se očekává, že tam bude ukazatel 
na pole o délce bytes-10.
:-)

PH

-----Původní zpráva----- 
From: Miroslav Mraz
A co vám brání předat ten uint8_t přes ukazatel ? Ono je lépe ty ...
vůbec nepoužívat, nakonec třeba MISRA to tuším přímo zakazuje.

Mrazík

Dne 22.7.2016 v 21:08 Pavel Hudecek napsal(a):
> 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? 



Další informace o konferenci Hw-list