1

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

#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

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

4

2 回答 2

10

你可以这样做:

#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define DEFAULT_HEIGHT ((IS_IPAD) ? 475.0 : 175.0)
于 2012-06-23T07:36:49.507 回答
2

你不能用预处理器做到这一点。预处理器条件宏只接受编译时常量表达式。改用 C 代码,如下所示:

float defaultHeight;
if (IS_IPAD)
{
    defaultHeight = 475;
}
else
{
    defaultHeight = 175;
}

顺便说一句,给预处理器#define宏小写名称是不好的做法。如果要对默认高度使用宏,请使用

#define DEFAULT_HEIGHT value

反而。

于 2012-06-23T06:23:45.403 回答