在ISO/IEC 9899:TC2中,标准规定如下



因此,从标准尚不清楚,是否可以将一种类型的指针强制转换为另一种类型的指针。

最佳答案

严格的别名规则是在其他地方定义的。措辞如下:

C(ISO/IEC 9899:1999 6.5/7):



C++(ISO/IEC 14882:2011 3.10 [basicl.val]/15):



C语言标准不禁止您将指针强制转换为不相关的类型,前提是没有引发问题。但是,由于严格的别名规则,您基本上不能取消引用从此类强制转换获得的指针。因此,使用此类“无效”指针唯一有用的事情是将其强制转换回正确的类型(或兼容的类型)。

在C++中,使用reinterpret_cast(5.2.10 [expr.reinterpret.cast]/7)基本上是相同的:

关于c++ - C或C++是严格的别名吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7291874/

10-11 15:30