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

regarding type casting

my program stop running while executing the following line.

(struct IFramHead *) ptr) ->length = Length;

where declaration are as bellow:

1: unsigned int Length

2: struct IFramHead
{
unsigned int length;
unsigned int index;
}

3: unsigned char *ptr;

I have use this sentex while writingcode for C51 compiler. is this problem is arises because of 8 or 16 bit processor, or there is some memory problem or stack problem.
if anybody know why this line not behave well then please reply me as soon as possible.

thanks
amit patel

Parents
  • Your program will cause the hardware trap 'Word operand illegal access' if it tries to access a word operand at an odd address. The code line you gave us can do it if ptr corresponds to an odd address. It is your responsibility to make sure that ptr actually points to an IFramHead structure that is properly aligned in memory at a word boundary.

    - mike

Reply
  • Your program will cause the hardware trap 'Word operand illegal access' if it tries to access a word operand at an odd address. The code line you gave us can do it if ptr corresponds to an odd address. It is your responsibility to make sure that ptr actually points to an IFramHead structure that is properly aligned in memory at a word boundary.

    - mike

Children