我在编译Kernel是遇到这个问题,如图,type specifier missing是什么原因?
Kernel代码:
__kernel scan_blk( unsigned char* blk,unsigned char condition,unsigned char *result,unsigned char* result_num){
int result_num_of_one_thread;
unsigned char BLK_GENERAL_HEADER_SIZE ;
unsigned char BLK_ACCESS_INFO_HEADER_SIZE;
int result_position;
unsigned char data_length;
unsigned char * data_length_position;
unsigned char* valstart;
unsigned char * access_head;
unsigned char item_num;
result_num_of_one_thread=0;
BLK_GENERAL_HEADER_SIZE=28;
BLK_ACCESS_INFO_HEADER_SIZE=24;
blk=blk+32*1024*result_position;
access_head=blk + BLK_GENERAL_HEADER_SIZE ;
valstart = blk + BLK_GENERAL_HEADER_SIZE + BLK_ACCESS_INFO_HEADER_SIZE;
data_length_position=access_head+32;
item_num=(short) data_length_position;
data_length_position=access_head+32+16;
data_length=(unsigned short)*data_length_position;
result_position=get_global_id(0);
result=result+32*1024*result_position;
switch(data_length){
case 8:
for(int i=0;i<item_num;i++){
if(*((char*)valstart+i)==*((char*)(condition))){
result_num_of_one_thread++;
*result=*(blk+32*1024-i*8);
result++;
}
}
case 16:
for(int i=0;i<item_num;i++){
if(*((short*)valstart+i)==*((short*)(condition))){
result_num_of_one_thread++;
*result=blk+32*1024-i*16;
*(result+1)=*(blk+32*1024-i*16-8);
result+=2;
}
}
break;
case 32:
for(int i=0;i<item_num;i++){
if(*((int*)(valstart)+i)==*((int*)(condition))){
result_num_of_one_thread++;
for(int j=0;j<4;j++){
*result=*(blk+32*1024-i*32-j*8);
result++;
}
}
}
break;
}
*(result_num+result_position)=result_num_of_one_thread;
}