c++ - How do I cast a void pointer to a int[3]? -


i need call 3rd party library , pass in int[3] void * [works]:

int pattern[3] = {2,4,10}; if ( ostaskcreate( blinkled,         ( void * ) pattern,         ( void * ) &blinktaskstack[user_task_stk_size],         ( void * ) blinktaskstack,         main_prio - 1 ) != os_no_err ) {     iprintf( "*** error creating blink task\r\n" ); } 

but need parse string pattern array , can't seem right.

first pass string parser , array:

int (&parseblinkoncommand(char rxbuffer[3]))[3] {    // code parses rxbuffer , creates 3 ints needed     int pattern[3] = {repeats, onticks, offticks};      return pattern; } 

then try pass ostaskcreate did before:

int pattern2[3] = parseblinkoncommand(rxbuffer);                     if ( ostaskcreate( blinkled,         ( void * ) pattern2,         ( void * ) &blinktaskstack[user_task_stk_size],         ( void * ) blinktaskstack,         main_prio - 1 ) != os_no_err ) {     iprintf( "*** error creating remote blink task\r\n" ); } 

but error 'array must initialized brace-enclosed initializer'.

what right way this?

first, parseblinkoncommand returns reference local object , return dangling reference.

second c-array not copyable, int pattern2[3] = parseblinkoncommand(rxbuffer); should int (&pattern2)[3] = parseblinkoncommand(rxbuffer);.

but why not using std::vector or std::array (or custom structure) ?

std::vector<int> parseblinkoncommand(const char (&rxbuffer)[3]) {    // code parses rxbuffer , creates 3 ints needed     return {repeats, onticks, offticks};   } 

and then

auto pattern2 = parseblinkoncommand(rxbuffer);                     if ( ostaskcreate( blinkled,                    pattern2.data(),                    &blinktaskstack[user_task_stk_size],                    blinktaskstack,                    main_prio - 1 ) != os_no_err ) {     iprintf( "*** error creating remote blink task\r\n" ); } 

Comments

Popular posts from this blog

Android : Making Listview full screen -

javascript - Parse JSON from the body of the POST -

javascript - Chrome Extension: Interacting with iframe embedded within popup -