Protocol

CVarArg

A type whose instances can be encoded, and appropriately passed, as elements of a C va_list. それのインスタンスが、符号化されること、そして適切に渡されることが、C va_listの要素として可能である型。

Declaration 宣言

protocol CVarArg

Overview 概要

You use this protocol to present a native Swift interface to a C “varargs” API. For example, a program can import a C API like the one defined here: あなたは、このプロトコルを使ってSwift固有のインターフェースをC「varags」APIに贈呈します。例えば、あるプログラムはC APIをここで定義されるもののようにインポートできます:


int c_api(int, va_list arguments)

To create a wrapper for the c_api function, write a function that takes CVarArg arguments, and then call the imported C function using the withVaList(_:_:) function: c_api関数に対するラッパーを作成するには、CVarArg引数をとる関数を書いて、それからインポートされたC関数をwithVaList(_:_:)関数を使って呼び出してください:


func swiftAPI(_ x: Int, arguments: CVarArg...) -> Int {
    return withVaList(arguments) { c_api(x, $0) }
}

Swift only imports C variadic functions that use a va_list for their arguments. C functions that use the ... syntax for variadic arguments are not imported, and therefore can’t be called using CVarArg arguments. Swiftは、C可変長引数関数で、va_listをそれの引数として使うものをインポートするだけです。...構文を可変長引数に使うC関数はインポートされません、そしてそれゆえCVarArg引数を使って呼び出されることができません。

If you need to pass an optional pointer as a CVarArg argument, use the Int(bitPattern:) initializer to interpret the optional pointer as an Int value, which has the same C variadic calling conventions as a pointer on all supported platforms. あなたがオプショナル値をCVarArg引数として渡す必要があるならば、Int(bitPattern:)イニシャライザを使って、オプショナルポインタをInt値として解釈してください、それは全てのサポートされるプラットホーム上のポインタと同じC可変長引数呼出規約を持ちます。

See Also 参照

C Variadic Functions C可変長引数関数