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