我使用嵌入式C用于motorola 68000微处理器。我想将指针地址存储在uint16变量中,然后,想要做变量的mod。我这样做的主要原因是检查EEPROM的扇区是否正确分配。
EG->
uint16 a, c;
uint16 *b;
b=&a;
c=b%4;
像这样的东西。显然,我不能这样做。
由于
答案 0 :(得分:2)
您是否仅限于16位地址空间,即64 KB的RAM?这对68k系统来说非常小。
无论如何,您需要将指针转换为整数类型,以便对其进行算术运算;
#include <stdint.h>
uint16 a, *b = &a;
intptr_t c = (intptr_t) b;
if( (c % 4) != 0 )
{
/* bad address! */
}
请注意,上面的不会将地址存储在16位变量中,因为这不是正确的方法。相反,它使用intptr_t
将指针保存为整数。
答案 1 :(得分:1)
b = (uint16*)(((uint16)(&a)) % 4);