【问题标题】:How do I access a preprocessor macro from code in Xcode using Swift?如何使用 Swift 从 Xcode 中的代码访问预处理器宏?
【发布时间】:2019-05-07 20:30:33
【问题描述】:

如何从 Swift 代码中为我定义的字符串访问 Xcode 中的预处理器宏?其他 stackoverflow 帖子展示了如何创建宏,但没有向我展示如何在代码中充分访问它们。

例如,我定义了一个名为 HELLO_WORLD_STRING = "Hello World!" 的常量。在构建设置中的预编译标头中未使用的预处理器宏中,如图所示:

作为示例,我将如何在调试窗口中打印该常量?

我实际上需要使用应用名称的值来设置导航栏的标题,但我想采取这条路线来做到这一点。

我尝试过使用 #if ... #endif 语句,但无法识别该常量。

【问题讨论】:

  • 您使用什么语言? Swift 避免使用宏。 #ifdef 有效,但定义不多。
  • 我正在使用 Swift。
  • 我不得不问:你认为从构建系统中检索这个值而不是在你的应用程序委托中为你自己设置它会得到什么好处?
  • 据我所知,这在 Swift 中是不可能的。您可以使用 Bundle.main.executablePath 获取可执行文件的完整路径。
  • 是的,所以 Swift 正在勇敢地尝试停止使用宏,因为它们会使代码难以推理,成为需要寻找常量的另一个地方。

标签: ios swift xcode macros build-settings


【解决方案1】:

如果你想使用如下语法:

 #if DEBUG_API_CALL
    print("Start loading \(method) \(url)")
 #endif

您必须在构建设置选项卡中将 DEBUG_API_CALL(或其他您的名字)添加到 Active Compilation Conditions:

【讨论】:

    猜你喜欢
    • 2015-02-26
    • 2016-09-02
    • 1970-01-01
    • 2010-09-19
    • 2018-01-03
    • 1970-01-01
    • 2012-03-11
    • 2011-12-17
    • 2017-04-04
    相关资源
    最近更新 更多