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