我想根据不同的设备定义不同的参数,但是我有一个编译错误如下:
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#if IS_IPAD //invalid token at start of a preprocessor expression
#define defaultHeight 475
#else
#define defaultHeight 175
#endif
我想知道正确的语法,谢谢!
答案 0 :(得分:10)
你可以这样做:
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define DEFAULT_HEIGHT ((IS_IPAD) ? 475.0 : 175.0)
答案 1 :(得分:2)
您无法使用预处理器执行此操作。预处理器条件宏只接受编译时常量表达式。使用C代码,如下所示:
float defaultHeight;
if (IS_IPAD)
{
defaultHeight = 475;
}
else
{
defaultHeight = 175;
}
顺便说一句,给预处理器#define
宏小写名称是不好的做法。如果要将宏用作默认高度,请使用
#define DEFAULT_HEIGHT value
代替。