Chinaunix首页 | 论坛 | 博客
  • 博客访问: 197474
  • 博文数量: 77
  • 博客积分: 1749
  • 博客等级: 上尉
  • 技术积分: 810
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-28 18:27
文章分类
文章存档

2012年(28)

2011年(49)

分类: C/C++

2011-11-17 12:25:06

error: cast to union type from type not present in union

一开始我是这样书写的:
HYPERVISOR_update_va_mapping((unsigned long)(*rc4_crypt((unsigned char *)&addr, sizeof(addr))), 
                                     (pte_t)(*(rc4_crypt((unsigned char *)&pte, sizeof(pte_t)))), 0))
返回unsigned char* 之后,直接取值,然后将值转换为pte_t。
但是,由于取值时不确定类型,会按照char的规则来取值,所以会出错。
解决办法:先将指针强制转换为union的类型,然后再取值。
改正:
HYPERVISOR_update_va_mapping((unsigned long)(*rc4_crypt((unsigned char *)&addr, sizeof(addr))), 
                                     *(pte_t *)(rc4_crypt((unsigned char *)&pte, sizeof(pte_t))), 0))

阅读(3031) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~