我正在同时为 iOS 和 Mac OS X 编写一个 OpenGL(ES) 应用程序。代码的某些部分是特定于平台的,我使用条件编译,但大部分代码对两个平台都是通用的。
我开始在 iOS 中开发我的代码。当我第一次尝试为 Mac 编译时,我意识到在桌面上,基本的 cocoa C 类型,例如CGFloat
andNSUInteger
是 64 位的(即,double
分别unsigned long
代替float
and unsigned int
),所以当我收到很多“隐式向下转换警告”时:
- 我分配了
CGFloat
一个GLfloat
- 我
NSLog()
已经NSUInteger
使用了%u
关于#1,我可以切换到 usingfloat
而不是CGFloat
到处使用,但我也需要CGSize
, CGRect
,CGPoint
这样也会导致问题。
关于#2,我可以切换到使用uint
而不是NSUInteger
,但可可NSUInteger
在任何地方都使用(例如[NSArray count]
)。
关于基本 C 类型,编写最干净的代码并且在 iOS 和 OS X 上编译时没有大量警告的最佳策略(或建议)是什么?