指针转化,不知道哪里出错,求解答!

[复制链接]
2904|5
 楼主| sjc_sugar 发表于 2012-3-10 08:54 | 显示全部楼层 |阅读模式
TE, AD, tv, ST, rc
定义:
INT16U *TestV;
INT8U Temp;
void *P;
P=TestV;

Temp=I2C_ReadByte();
*P=Temp*256+I2C_ReadByte();

这句编译器错误:
SOURCE\_24C02.C(313): error C194: '*' indirection to object of unknown size
不知道为什么错?求解!
ayb_ice 发表于 2012-3-10 10:30 | 显示全部楼层
需要强制转换
原野之狼 发表于 2012-3-10 12:54 | 显示全部楼层
1 不能对void*类型求*运算
2 Temp*256会溢出
sunhq02 发表于 2012-3-10 13:26 | 显示全部楼层
void 指针是空指针, 只包含地址信息不包含格式信息
所以编译器不知道  *p是一个多大的变量
所以  对void指针做*运算是无意义的
你得先强制类型转换, 比如说  *(INT16U *)p


另外, Temp*256也得写成  (INT16U)Temp*256
李富贵 发表于 2012-3-10 14:06 | 显示全部楼层
呵呵,Temp*256这句显然不对,—— 一个指针不能作为右值!俺刚学的标量/矢量概念;赋值号= 右值只能是标量,而指针是矢量;或许(合法的写法)应写为:

       ……  = *(INT8U *)256 + ……;

、、 ...
刘前辈 发表于 2012-3-10 14:00

一口胡辣汤喷屏幕上了。
sheriff 发表于 2012-3-10 15:47 | 显示全部楼层
一口胡辣汤喷屏幕上了。
李富贵 发表于 2012-3-10 14:06

:lol
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

70

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部