11

従来の C スタイル#errorキーワードの迅速な置換とは何ですか?

事前定義が失敗したときにコンパイル時エラーを発生させるために必要です。

#if CONFIG1
    ...
#elseif CONFIG2
    ...
#else
    #error "CONFIG not defined"
#endif
4

3 に答える 3

3

ドキュメントによると、特定の #error マクロはありません。ただし、コンパイルからプログラムを作成することは可能です。

これを行う方法は、使用する変数を #if/#endif 句内で定義することです。一致する句がない場合、変数は未定義になり、プログラムはコンパイルされません。

回避策により、障害サイトでエラーを発生させることができます。#else 句にプレーンな文字列を入力すると、構文エラーが発生します。を使用@availableすると、コンパイラの警告が生成されます。

#if CONFIG1
    let config = // Create config 1
#elseif CONFIG2
    let config = // Create config 2
#else
    // Compilation fails due to config variable undefined errors elsewhere in the program.

    // Explicit syntax error to describe the scenario.
    Config not specified.

    // This generates a compiler warning.
    @available(iOS, deprecated=1.0, message="Config not defined")
#endif

// Use config here, e.g.
let foo = config["fooSize"]
于 2016-07-13T10:54:17.060 に答える