The task function passed as the first parameter MUST be defined as “void fun(void *arg)” or you will get an error/warning.If the task wants the argument to be of a different type, it should change it inside the function. Using a different type of pointer may “work” as all pointers “look” the same on most machines now a days (including the dspic series), but it is a violation of the C standard as it is NOT true for all machines. in particular, machines which use “word” addressing instead of byte addressing.