我们在标头中定义了两个变量:
uint8_t adm_write0[2], adm_port0;
我们也有
#define ANTENNA_1_OUT 0X01
。在main()
中,我们有:
adm_write0[1] = adm_port0 & ANTENNA_1_OUT;
,但是编译器会拒绝此错误,并显示“无效的二进制操作数”错误。 另一方面,它接受
adm_write0[1] = *(adm_port0) & ANTENNA_1_OUT;
为什么?
答案 0 :(得分:0)
您不应引用不是指针的变量。在您的情况下,adm_port0
是uint8_t
。您应该将其转换为指针类型,或者将操作从... *(adm_port0)
...修改为其他内容。
让我进一步解释一下,取消引用运算符(*)从 指针 而不是任何其他类型指定的地址中获取内容。
如果adm_port0
变量包含指针,则可以执行此操作... *((uint8_t *)adm_port0)
,它将把adm_port0
转换为指向uint8_t
的指针。 / p>