operand of "*"must be a pointer
时间: 2024-04-22 20:24:38 浏览: 38
这个错误是因为代码中使用了解引用运算符 `*`,但操作数不是一个指针类型。根据代码片段提供的信息,错误可能出现在以下两行代码中的一行:
```
*(volatile u16*)DXR1_ADDR(CODEC_DATA)=-500;
*(volatile u16*)DXR1_ADDR(CODEC_DATA)=500;
```
这两行代码尝试将一个值赋给指针所指向的内存地址。然而,根据错误消息,操作数应该是一个指针类型。
要解决这个错误,你可以检查 `DXR1_ADDR(CODEC_DATA)` 的返回类型是否为指针类型,并确保将其分配给一个指针变量。或者,你可以重新评估代码逻辑,确保正确使用指针运算符 `*`。
相关问题
#76 operand of "*" must be a pointer
这个错误信息通常表示在使用乘法运算符时,操作数不是一个指针类型。在你的代码中,`float *a` 是一个指向浮点数的指针,而乘法运算符需要两个操作数,它们都必须是数字类型(例如整数或浮点数)。
如果你想要计算指针所指向的值与另一个数字的乘积,可以使用以下方式:
```c
float *a;
float b = 2.0;
float result = *a * b;
```
在这个例子中,`*a` 表示获取指针 `a` 所指向的值,然后与 `b` 相乘得到 `result`。
请确保在进行乘法运算之前,检查操作数的类型和值是否正确,并根据需要进行相应的类型转换。
..\Source\APP\Main.c(125): error: #75: operand of "*" must be a pointer if(fAngle[1]>5.0) {*TIM_SetCompare3( IM2,20);*u3_printf("?缁?3??\r\n");}//3?诺缁? ..\Source\APP\Main.c(125): error: #75: operand of "*" must be a pointer if(fAngle[1]>5.0) {*TIM_SetCompare3( IM2,20);*u3_printf("?缁?3??\r\n");}//3?诺缁?
这个错误提示是因为在对指针进行解引用时出现了错误。在这一行代码中,星号“*”被放在了函数调用的前面,导致编译器无法正确解析星号后面的内容。正确的写法应该是将星号放在函数调用的后面,像下面这样:
```
if (fAngle[1] > 5.0) {
TIM_SetCompare3(IM2, 20);
u3_printf("?缁?3??\r\n"); //3?诺缁?
}
```
这样就可以避免这个错误了。