百科问答小站 logo
百科问答小站 font logo



GCC 4 编译警告:warning: dereferencing type-punned pointer will break strict-aliasing rules 有什么比较好的解决办法? 第1页

  

user avatar   zhang-hao-72 网友的相关建议: 
      

挖个坟。。。我也是在类似*(unsigned long*)msg == KEY_XX这样的场合碰到这个warning了。

KEY_XX本身是个宏,所以没法用memcmp(msg, &KEY_XX, sizeof(KEY_XX)) == 0来解决。

最后笨办法解决了,似乎比用union简洁一点。

       unsigned long key; memcpy(&key, msg, sizeof(key)); if(key == KEY_XX) ...     

以及,如果msg首地址不是按4对齐,在某些不支持非对齐访问的cpu上(比如STM32F0)会出错。这个办法可以避免。




  

相关话题

  用 C# 写个方法解析简单的 JSON 字符串有哪些思路? 
  程序员的口头禅是什么? 
  如何看待有赞“996”工作制遭劳动监察部调查,是否能改善互联网公司普遍超时加班的违法现象? 
  什么理由让代码保存为GBK? 
  程序员面试,面试官更注重代码量、项目经验还是操作系统、数据结构这种基础课程?两者比例是五五开还是多少? 
  使用 open addressing 的 Hash 表载荷过高为什么会降低 CPU 的缓存命中率? 
  如何看待不到40M的wps和1G多的office? 
  C++可以直接返回多值? 
  如何看待赛灵思Xilinx收购Falcon Computing,以及Falcon主营业务的前景? 
  携程技术提问:在你看来,什么才是好的工程师文化? 

前一个讨论
总共欠七十万元网贷,向家里人坦白了,家人让我去死,我该怎么办?
下一个讨论
发光二极管多大的电流可以亮?





© 2025-05-04 - tinynew.org. All Rights Reserved.
© 2025-05-04 - tinynew.org. 保留所有权利