百科问答小站 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)会出错。这个办法可以避免。




  

相关话题

  程序员离开大厂进工厂,越来越多高学历人才加入制造业,如何看待这一趋势,会带来哪些变化? 
  有人说 Java 程序员离开框架就什么都不是,如何看待这一言论? 
  程序员必备的书籍有哪些? 
  Microsoft BASIC 源代码公布,如何评价比尔·盖茨写代码水平? 
  几乎零基础的电子开发人员,如何成为优秀的程序员? 
  是否有多人认为程序员的工作就是复制粘贴?为什么? 
  为了软件更符合开源风格,c/cpp 代码缩进应该使用4空格还是2空格? 
  大龄青年(27 岁)去美帝转 CS master 有哪些坑? 
  插件机制实现的原理是什么? 
  低代码会导致程序员失业吗? 

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





© 2024-11-08 - tinynew.org. All Rights Reserved.
© 2024-11-08 - tinynew.org. 保留所有权利