c - Pass uint16_t array into function that takes uint8_t* -
in c, i'd pass uint16_t array function takes uint8_t:
bool fctn(uint8_t *data, size_t length); i have array, within struct:
typedef struct sstruct sstruct; struct sstruct{ uint16_t d[10]; } sstruct mystruct; so do:
void test(sstruct structdata) { fctn( (uint8_t*)structdata->d[0], 10*sizeof(uint16_t) ); } the length isn't issue here, it's passing array. if array weren't pointer i'm getting "error: cast pointer integer of different size", how can create array of uint8_t? far function concerned, uint16_t array double length array of size uint8_t, i'm not sure how tell compiler this...when input pointer.
if array 'd' wasn't within struct, global, i'd do
fctn( (uint8_t*)d, 10*sizeof(uint16_t) ); what's right way function pass array within passed struct?
when uint16_t d[10];, defining array d. when d[0], access first element of array, of type uint16_t. function expecting pointer, should cast pointer array, not element in it:
fctn( (uint8_t*)d, 10*sizeof(uint16_t) ); when this, d decayed type uint16_t[10] uint16_t*, cast uint8_t* before beingness passed fctn.
as aside, can utilize sizeof(d) simplify length calculation:
fctn( (uint8_t*)d, sizeof(d) ); note works if d declared array (on stack).
c arrays uint8t
No comments:
Post a Comment