gpt4 book ai didi

ios - 在 "if"语句中使用#define

转载 作者:可可西里 更新时间:2023-11-01 05:06:48 25 4
gpt4 key购买 nike

是否可以在“if”语句中使用#define?以下代码有效,但我收到一条警告,指出正在重新定义宏。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
#define TableViewHeight 916
#define DisplayHeight 1024
#define DisplayWidth 768
}
else {
#define TableViewHeight 374
#define DisplayHeight 480
#define DisplayWidth 320
}

我也试过这个,但是没用:

#ifdef UIUserInterfaceIdiomPad
#define TableViewHeight 916
#define DisplayHeight 1024
#define DisplayWidth 768
#else
#define TableViewHeight 374
#define DisplayHeight 480
#define DisplayWidth 320
#endif

有什么想法吗?

最佳答案

是的,这是可能的,但它可能不会按照您的想法进行。在编译预处理步骤的结果之前解释预处理程序指令。

这意味着所有预处理器指令都被解释,重新定义一些宏,然后编译其余代码,如下所示。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
}
else {
}

换句话说,在预处理之后,您只有空的 ifelse 主体。

如果您想在运行时根据条件更改某物的值,那么该某物必须是真正的对象,而不仅仅是预处理器宏。例如

extern int TableViewHeight; // defined somewhere else
extern int DisplayHeight; // defined somewhere else
extern int DisplayWidth; // defined somewhere else

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
TableViewHeight = 916;
DisplayHeight = 1024;
DisplayWidth = 768;
}
else {
TableViewHeight = 374;
DisplayHeight = 480;
DisplayWidth = 320;
}

关于ios - 在 "if"语句中使用#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8661918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com