【发布时间】:2020-11-18 15:39:55
【问题描述】:
我正在研究严格别名以及如何处理它,并在 DPDK 上找到了this commit。
为了修复严格的别名(根据 cmets),他们将 void* 参数 src 和 dst 转换为 uintptr_t。然后使用铸造版本。
据我了解,这与严格的别名规则无关,因为在规则本身中没有提到转换为 uintptr_t。
投到uintptr_t 真的有助于严格混叠吗?或者这只是解决来自 GCC 的一些可能的警告?
【问题讨论】:
-
那个提交对我来说看起来像是假的,编译器不允许假设 void * 参数无论如何都没有别名 afaik,我不认为 const 改变任何东西。
标签: c strict-aliasing dpdk