gcc 编译报错

hzgmm 2016-07-22 08:21:20
编译工程时,在下面这句报错
*(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount;


错误信息:
error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
....
cc1: some warnings being treated as errors
...全文
228 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
060 2016-07-29
  • 打赏
  • 举报
回复
引用 2 楼 Gump4231 的回复:
弱弱问一句,怎么能把代码复制成这样。。。
调整一下代码缩进,使用语法着色,让大家看起来方便些。 语法着色,在论坛的编辑框里,有一排按钮,左数第12个,可以使用各种语言的语法着色。
Gump4231 2016-07-28
  • 打赏
  • 举报
回复
引用 楼主 hzgmm 的回复:
编译工程时,在下面这句报错
*(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount;
错误信息:
error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
....
cc1: some warnings being treated as errors
弱弱问一句,怎么能把代码复制成这样。。。
Gump4231 2016-07-27
  • 打赏
  • 举报
回复
弱弱问一句,怎么能把代码复制成这样。。。
LubinLew 2016-07-25
  • 打赏
  • 举报
回复
编译时有 -fstrict-aliasing 参数或者 -O2等优化参数 就会启用严格对齐。 你使用了参数[-Werror=strict-aliasing],这意味着你设置了编译器将strict-aliasing的warning编程error 严格对齐 简单来说就是 编译器希望不同类型的对象不会指向同一个地址,你只能使用对应类型去访问对应的地址。 比如说你代码中的buffer[SHA256_SHORT_BLOCK_LENGTH]是 char型的数组, 那么只能使用 char / unsigned char 类型去访问buffer,其他类型(sha2_word64)就会报这个错误。

69,378

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧