栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Swift中使用编译器变量

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Swift中使用编译器变量

-D
C编译器的标志定义了预处理器宏。Swift中没有预处理器宏。因此,如果您要执行以下操作:

// compile with -DPORT_NUMBER 31337var port = PORT_NUMBER    // error

…你不能。Swift旨在使源代码在编译之前在语法上完整。如果您可以在构建时关闭其中的某些块,则可能会破坏工具链的功能,以帮助验证代码是否正确。(部分原因是因为C中的预处理器宏是文本替换的:您可以使用它们来重写语言的任何部分,而不仅仅是填写变量的值。)

Swift编译器确实有一个

-D
标志,但是其使用受到更多限制:您只能将其用于构建配置。因此,如果您想执行以下操作,那将很酷:

// compile with -DUSE_STAGING_SERVER#if USE_STAGING_SERVERvar port = 31337#elsevar port = 80#endif

请注意,与C不同,

#if
块内的所有内容都必须在语法上完整。(例如,您不能仅将a的声明行
func
放在
#if
块中,而将函数主体保留在条件语句之外。)

当然,如果要在代码中使用编译时设置的配置
,这对您没有帮助。为此,我建议使用其他方法。Xpre仍然可以在资源文件(例如属性列表)中进行文本替换。(请注意,应用程序随附的Info.plist充满了诸如之类的东西

$(TARGET_NAME)
。)因此,您可以在应用程序中包含捆绑资源,其内容将根据项目设置在编译时填充,然后读取端口从那开始



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406532.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号