key是char字符串,数据集合是结构体指针,key要与结构体指针的元素比较。
int cmp_fldnm_search(const void *a , const void *b){
char* aa=(char *)a;DB_FIELD* bb=*(DB_FIELD**)b;
return strcmp(aa,bb->def.field_nm);
//DB_FIELD* xb=(DB_FIELD*)b;
//ILOG("bb[%x] xb[%x]",bb,xb);
//xb和bb的地址是不同的。
//char* aaa=*(char **)a;//出core
//ILOG("test a[%x] [%s] aa[%x] [%s] aaa[%x] [%s]",a,(char*)a,aa,(char*)aa,aaa);
//验证发现a与aa地址相同,但是与aaa地址不同。
}
a是key,b是集合。
因为a是key?
DB_FIELD** p_p_fld=NULL;
p_p_fld=(DB_FIELD**)bsearch(ptree->text,allset,num,sizeof(allset[0]),cmp_fldnm_search);
注意,返回值也是DB_FIELD** 类型的