C中无效的二进制操作数

时间:2018-12-19 16:33:30

标签: c pointers bitwise-operators

我们在标头中定义了两个变量:

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;

为什么?

1 个答案:

答案 0 :(得分:0)

您不应引用不是指针的变量。在您的情况下,adm_port0uint8_t。您应该将其转换为指针类型,或者将操作从... *(adm_port0) ...修改为其他内容。

让我进一步解释一下,取消引用运算符(*)从 指针 而不是任何其他类型指定的地址中获取内容。

如果adm_port0变量包含指针,则可以执行此操作... *((uint8_t *)adm_port0),它将把adm_port0转换为指向uint8_t的指针。 / p>