我有一段第三方代码要编译,下面是失败的代码片段:
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/