gpt4 book ai didi

iphone - 在 iPhone/iPad 上正确使用宏 #define

转载 作者:行者123 更新时间:2023-12-03 20:20:06 25 4
gpt4 key购买 nike

我一直在阅读有关 iOS 中 #define 宏的使用以及它们是仅在编译时运行还是也在运行时运行的相互冲突的信息。

考虑我的情况:我想定义一个宏,它返回一个有关屏幕是大尺寸还是小尺寸的 BOOL,代码如下:

#define TTThisScreenWidth [[UIScreen mainScreen] bounds].size.width
#define TTLargeScreenTrushHold 700.0f
#define TTScreenIsOfLargeSize (TTThisScreenWidth > TTLargeScreenTrushHold)

问题:如果此代码仅在编译时运行,则屏幕大小将在其编译到的设备上固定,并且在具有不同屏幕的设备上运行时不会返回正确的答案。

但是:我检查了它,当最初为 iPhone(通用应用程序)编译时,它在 iPad 上完美运行

SO:不这样做安全吗?

谢谢!

最佳答案

宏在编译时被替换;它们不会在编译时运行。宏的主体将被“粘贴”以代替对宏名称的引用,就像您手动键入它一样。

一般来说,编译器将在编译时评估常量表达式,无论是否带有宏。您的 TTThisScreenWidth 不涉及常量表达式 - 它是一个运行时表达式,因此它是在运行时评估的。

关于iphone - 在 iPhone/iPad 上正确使用宏 #define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245364/

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