【问题标题】:How to force a Swift compiler error with a custom message如何使用自定义消息强制 Swift 编译器错误
【发布时间】:2016-02-29 18:45:12
【问题描述】:

我正在对公开新方法的库进行更改,但它仅适用于特定架构。例如,如果您从 ARM 程序集中调用它,我想要一个编译时错误,指示您使用编译器条件来排除调用。有没有办法做到这一点?类似于以下内容:

public func x86Only() {
    #if arch(x86_64)
    // Do something here
    #else
        compiler_fail("x86Only() can only be called from x86_64 architecture")
    #end
}

上面的(发明的)compiler_fail() 是否存在于 Swift 中?

fatalError() 不能很好地工作,因为它会触发运行时断言失败,而不是在编译时捕获用户错误。

【问题讨论】:

    标签: swift compilation compiler-errors


    【解决方案1】:

    从 Swift 4.2 开始,您可以使用 #warning 在 Xcode 中显示黄色警告,并使用 #error 显示红色构建时错误。

    例如,此代码将显示带有自定义消息的警告:

    #warning("Fix this code before release!")
    

    这些也可以在条件编译块中工作,这正是您要寻找的。​​p>

    #if os(macOS)
    #warning("This library is for iOS only")
    #endif
    

    【讨论】:

      【解决方案2】:

      您正在寻找“编译时断言”之类的东西?

      很遗憾,这还没有实现。但是“swift-evolution”列表中有对应的线程:

      https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151221/003837.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        • 2015-09-22
        • 2013-06-12
        • 1970-01-01
        相关资源
        最近更新 更多