在C中执行指针变量的mod

时间:2012-09-06 12:56:12

标签: c embedded 68000

我使用嵌入式C用于motorola 68000微处理器。我想将指针地址存储在uint16变量中,然后,想要做变量的mod。我这样做的主要原因是检查EEPROM的扇区是否正确分配。

EG->

 uint16 a, c;
 uint16 *b;
 b=&a;
 c=b%4;

像这样的东西。显然,我不能这样做。

由于

2 个答案:

答案 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);