platform-switch (マクロ)
パッケージ: CURL.LANGUAGE.COMPILER

現在のプラットフォームに基づく条件付きコンパイルをサポートします。

構文

{platform-switch case platforms do body case platforms do body [...] [else body] }

説明

このマクロは、現在のプラットフォームと最初に一致する platforms に対応する body を展開します。一致がなければ else に対応する body を展開するか、展開を行いません。

注意事項

platforms 内の各プラットフォームはリテラル文字列で指定する必要があります。大文字小文字は区別されます。 現在、"win32" は任意の win32 プラットフォーム(64bitを含む)、"mac" は任意の Mac OS プラットフォーム、"unix" は任意の unix プラットフォーム、"linux" は任意の linux プラットフォームに対応します。その他のリテラル文字列はすべて不一致になります。 "linux" または "mac"に一致する場合は "unix" も一致になり、将来はその他の unix プラットフォームもサポートされる可能性がある点に注意してください。

次の例では、現在のプラットフォームに応じて異なる実装を持つプロシージャを定義しています。
例: 条件付きコンパイル
{platform-switch
 case "win32" do
    {define-proc {tmp}:Url
        {return {abs-url "file:///c:/Temp"}}
    }
 case "unix" do
    {define-proc {tmp}:Url
        {return {abs-url "file:///var/tmp"}}
    }
 else
    {error "Unknown platform!"}
}
{text Temporary files can go into '{tmp}'.}