This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

char xdata *pointer _at_ postion : absolute illegal specifier

Hi

Why does this declaration not work:
char xdata *pointer _at_ postion;

but this one works:
char xdata array[1] _at_ postion;

Should be theoretically the same, or not?

Thanks Egon

Parents Reply Children
  • remember that there are two memory spaces to consider for a pointer
    here is my definitions, they should make it clear

                                                // pointer in data in
    #define U8DI  unsigned char   idata * data  // data       idata
    #define U8DX  unsigned char   xdata * data  // data       xdata
    #define U8IX  unsigned char   xdata * idata // idata      xdata
    #define U8XX  unsigned char   xdata * xdata // xdata      xdata
    #define U8IC  unsigned char   code  * idata // idata      code
    #define U8DC  unsigned char   code  * data  // data       code
    #define U8XC  unsigned char   code  * xdata // xdata      code
    #define U8CC  unsigned char   code  * code  // code       code
    

    note; no pointer point to DATA simply because that does not mak sense, there is no overhead from IDATA compared to DATA.

    Erik

  • I really think that the OP needs to appreciate the basic difference before getting involved in the question of memory spaces and any other Keil specifics.

    That is to say, he/she must appreciate that there is a difference between a pointer and an array.

  • Your right, too much thinking today, therefore the confusion!!

    Thanks for the link, the conversion of the generic pointer to a memory specific pointer solves the compiler error!

    Thanks for the quick help