Hello!
I have uVision that compiles fine with the C51 v7.03 compiler and the related package, but not complete with the 8.06. I used two different Keil installations. All files are in the same folder.
In the 8.06 I get linker errors like "object does not fit in to pdata page" and "0080H". This looks like the compiler was thinking the PDATA was only 128 bytes, but it is set to 256 bytes in the startup.a51. Any clue what's different in the newer Keil package?
Also there is a warning in 8.06 (which does not show in 7.03) "converting non-pointer to pointer" on this
ptr_xdata = sPtr_obj->Adresse;
while the vars are set like this:
uchar uc_set_obj( uchar pdata *ptr_Set) { uchar i; uchar xdata *ptr_xdata; struct stOBJADR code *sPtr_obj; sPtr_obj=&Obj[*ptr_Set]; . . . ptr_xdata = sPtr_obj->Adresse; }
The struct stOBJADR has a member "uint Adresse;"
I can see no wrong use of the pointers. I just want to be sure that the warning does not affect the code to not work correctly.
In "my" terminology, the terms "address of" and "value of" always have the same meaning irrespective of whether we're talking about a pointer or any other type of variable.
"your" terminology makes the same terms have different meanings depending on whether they're applied to pointers or other variables. Where is the benefit in that?! Surely that just makes it more confusing - as the same terms have different meanings in different contexts! It's just illogical!
"That's why a pointer to a pointer does not make sense for me at all."
It would make a lot more sense if wasn't for the needless confusion of your terminology!
Just because you don't understand a thing is no reason to mess-up the terminology for people who do understand it - and, in fact, need to use it!
The diagram illustrates perfectly clearly how a pointer-to-a-pointer does have a meaning - and a logical, consistent terminology makes it easy to understand.
This is why your terminology is fundamentally flawed: because it is actually common to use pointers-to-pointers and your terminology, on your own admission, cannot handle that.
It's not that people can't conceive that a different terminology is possible; it's that your terminology is so obviously flawed and unable to cope with the real requirements of 'C' programming - such as pointers-to-pointers!