定义short_do_tasklet是一个函数:其参数是一个unsigned long的类型;返回值也是void类型.函数名是short_do_tasklet,而&short_do_tasklet 是函数指针.routine = (void (*)(void *)) short_do_tasklet;这一句就是将函数名short_do_tasklet进行类型转换为routine类型的函数指针后付给routine指针变量的. * - 本贴最后修改时间:2006-7-22 14:48:51 修改者:dsp007
又是一个请教指针的问题r_data是一个指针,而firmware_addr的类型楼主没说,按规范一个全大写的标识符应该是一个整数常数,这两种类型不能直接赋值,要进行类型转换。如dsp007所说,第一个unsigned long 是作为强制类型转换用的,其实这句好的写法是: if ( (r_data = (unsigned long*)firmware_addr) == null)这样写,语句较短,意义也很清楚:将firmware_addr转型后赋值给r_data,然后再判断它是不是为空(null)。
dsp007说得对,支持!