We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi: when I compile the below code ,the keil51 emergered a error : error C212: indirect call: parameters do not fit within registers .
source code:
typedef struct NODE{
struct NODE *link; int value;
}NODE;
int compare_ints(void const *a,void const *b) { if(*(int *)a == *(int *)b) return 0; else return 1;
}
NODE * search_list(NODE *node,void const *value, int(*compare)(void const *,void const *)) {
while(node != NULL ){
if(compare(&node->value,value)==0)//error point break;
node = node -> link;
return node;
int main() { NODE *cur,*root; int value;
cur = search_list(root,&value,compare_ints); }
I can find where the error happen ,I mark with"error point" in the code. the compare() function pointer can not be filled in parameters,or the compile gives an alarm. I don't know why.
in other architectures, it's no big deal agreed. Ever so often we see that the "architecture ignorance", which for the PC is not a big deal, carries a heavy penalty in the smaller micros.
it's been a while, but here it is again
The '51 aint no PC
Erik