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




  

相关话题

  socket编程到底是什么? 
  如何理解《Effective C++》第31条将文件间的编译依赖关系降低的方法? 
  程序员转行烧烤需要做哪些准备,有哪些优势和劣势? 
  为什么不少程序员认为Matlab的语言设计不优雅甚至比较丑?能否举出一些例子来说明? 
  用惯了 C# 之后再也不想用别的语言了,正常吗? 
  为什么编程语言中没有一种 if,来判断大概率为真(或假)的情况,来提升 CPU 分支预测的速度呢? 
  如何看待链家程序员删除财务数据获刑 7 年? 
  一篇化生环材Nature大子刊和一名985毕业程序员一年工作产出相比,哪个更重要? 
  为什么没有人庆祝Unix Timestamp到达144 4444444? 
  GCC 4 编译警告:warning: dereferencing type-punned pointer will break strict-aliasing rules 有什么比较好的解决办法? 

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





© 2025-01-30 - tinynew.org. All Rights Reserved.
© 2025-01-30 - tinynew.org. 保留所有权利