我的问题涉及到我现在公司之前的一些重构工作。长话短说,一个属性在某一点上有一种(我猜)NSInteger
并且被改为NSNumber *
。当前代码编译是因为在整个代码库中有一些(long)
强制转换,但从语义上来说,这是完全不同的,因为它对指针的值进行操作;此属性的名称也不是唯一的,并且使用了数千次。
如果指针的大小不等于long的大小,那么GCC通常能够用-Wpointer-to-int-cast
来捕获它,但在两个平台上都是sizeof(long) == sizeof(void*)
。
我的问题是,当指针类型被用作算术类型时,无论语句是否具有强制转换,GCC总是会记录警告吗?