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




  

相关话题

  为什么程序员互相之间不能透露薪水? 
  为什么很多人都说 Python 简单? 
  还有哪些像 Unix,C/C++ 一样经久耐用的软件技术? 
  发现技术总监的框架有个bug该向他反应吗?如何提出比较合适? 
  马上30岁的程序员还可以通过语言学校去日本工作吗? 
  LLVM 相比于 JVM,有哪些技术优势? 
  C++ 有提供像是 C 中 realloc() 这样的函数的新版本吗? 
  如何评价不认为C++三大特性是封装、继承、多态的程序员? 
  为什么老板要教我们做互联网的程序员不要把工作和生活分开,这对于独立的程序员个体有什么好处? 
  为什么没有或流行的拼音编程语言? 

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





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