【发布时间】:2015-06-12 07:48:10
【问题描述】:
我使用 gcc-4.7 for 得到 lvalue 作为增量操作数错误消息
void func1()
{
u32 *src;
hwrcolor c;
c = *(((u32*)src)++);
}
和
void func2()
{
u8 *dest;
hwrcolor c;
u32 * u32Dest;
*(((u32 *)dest)++) = c;
}
我把它们改成
void func1()
{
u32 *src;
hwrcolor c;
u32Dest = ((u32*)src);
//c = *(u32Dest ++);
*u32Dest = *u32Dest + 1;
c = *u32Dest;
}
和
void func2()
{
u8 *dest;
hwrcolor c;
u32 * u32Dest;
u32Dest = ((u32 *)dest);
//*(u32Dest++) = c;
*u32Dest = *u32Dest + 1;
*u32Dest = c;
}
可以编译源代码,但应用程序无法按预期工作。转化是真的吗?
【问题讨论】:
-
什么是
u32、u8、hwrcolor? -
“应用程序无法按预期工作”,究竟出了什么问题?
-
@user4757345 包括强制转换在内的转换运算符将值转换为指定类型。所以即使这个代码 sn-p int x = 10;整数y; y = ( ( int )x )++;不会编译。
-
你应该研究一下
*(p++);和(*p)++;之间的区别。
标签: c