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

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

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

错误:取消引用类型punned指针将破坏严格的别名
规则
它是用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/

10-12 14:51