【发布时间】:2026-02-24 04:30:01
【问题描述】:
据我了解,GCC 在 C++ 中支持其所有 C99 功能。但是 C++ 代码中如何处理 C99 严格别名?
我知道在不相关的类型之间使用 C 进行强制转换不是严格混叠安全的,并且可能会生成不正确的代码,但是 C++ 呢?由于严格别名不是 C++ 标准的一部分(对吗?),GCC 必须自己指定语义。
我认为const_cast 和static_cast 在相关类型之间进行转换,因此它们是安全的,而reinterpret_cast 可以打破严格的别名规则。
这是正确的理解吗?
【问题讨论】:
标签: c++ c gcc strict-aliasing