c - gcc4.7 错误 - 取消引用类型双关指针

标签 c gcc4

我有一段第三方代码要编译,下面是失败的代码片段:

typedef struct wqe_s {
   ...
   uint8_t packet_data[96]
   ...
} wqe_t;

..
wqe_t *work = NULL;
..
wqe_t *w1 = *(wqe_t **)work->packet_data;  // ERROR

error: dereferencing type-punned pointer will break strict-aliasing rules

它是用 gcc-4.7 (-Wall -Werror) 编译的,我认为我不需要调整编译器标志,最好是修复代码。

如果能得到一些建议,我将不胜感激。谢谢!

最佳答案

像这样:

wqe_t *w1;
memcpy(&w1, work->packet_data, sizeof w1);

关于c - gcc4.7 错误 - 取消引用类型双关指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106675/

相关文章:

GCC 中的编译器标志 (C)

c - 链接多个 C 源文件

c - 进程线程被 __pthread_enable_asynccancel () 卡住

c - 接受并返回指针的函数指针

c - 具有内联汇编和访问 c 变量的多线程

c++ - 没有有用且可靠的方法来检测 C/C++ 中的整数溢出?

多次复制字符串

将字符串转换为十六进制、十进制和八进制

iphone - Xcode 4 中没有 gcc 4.2 编译器选项?

c++ - ubuntu下gcc 4.5安装问题