打印

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

[复制链接]
2034|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

使用特权

评论回复
5
李富贵| | 2012-3-10 14:06 | 只看该作者
呵呵,Temp*256这句显然不对,—— 一个指针不能作为右值!俺刚学的标量/矢量概念;赋值号= 右值只能是标量,而指针是矢量;或许(合法的写法)应写为:

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

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

一口胡辣汤喷屏幕上了。

使用特权

评论回复
6
sheriff| | 2012-3-10 15:47 | 只看该作者
一口胡辣汤喷屏幕上了。
李富贵 发表于 2012-3-10 14:06

:lol

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

70

帖子

1

粉丝