(编程)类型双关 / 类型“借用”:把一段内存按另一种数据类型来解释或访问(例如用指针强制转换、用 union 等),以复用同一块内存中的比特表示。常见于 C/C++ 的底层编程中;在某些情况下可能触发严格别名(strict aliasing)相关的未定义行为。
/taɪp pʌn/
I used a union as a type pun to inspect the bytes.
我用 union 做类型双关来查看这些字节。
In performance-critical code, careless type punning can break under compiler optimizations because of strict aliasing rules.
在性能关键的代码里,粗心的类型双关可能会因为严格别名规则而在编译器优化下出错。
type 来自希腊语 typos(“印记、模子、类型”)经由拉丁语、法语进入英语;pun(“双关语”)词源不确定,可能与“玩弄词语”有关。合在一起的 type pun 借用了“pun(双关)”的比喻:同一段比特“被当作两种类型来理解”。