#if条件的正确语法

时间:2012-06-23 06:19:48

标签: iphone objective-c ipad

我想根据不同的设备定义不同的参数,但是我有一个编译错误如下:

#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

我想知道正确的语法,谢谢!

2 个答案:

答案 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

代替。