プロトコル


CVarArg


そのインスタンスがコード化され、C 言語の va_list の要素として適切に渡される型。


iOS 8.0+ iPadOS 8.0+ Mac Catalyst 13.0+ macOS 10.10+

tvOS 9.0+ VisionOS 1.0+ WatchOS 2.0+

protocol CVarArg






以下で言及


Swift でインポートしたC関数を使用する (Using Imported C Functions in Swift)



概観


このプロトコルを使用すると、C 言語の「可変引数」API に対してネイティブな Swift インターフェースを提供できます。たとえば、プログラムはここで定義されているような C 言語 API をインポートできます。


int c_api(int, va_list arguments)

c_api 関数のラッパーを作成するには、CVarArg 引数を取る関数を作成し、withVaList(_:_:) 関数を使用してインポートした C 関数を呼び出します。


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

Swift は、引数に va_list を使用する C の可変引数関数のみをインポートします。可変引数に ... の構文を使用する C 関数はインポートされないため、CVarArg 引数を使用して呼び出すことはできません。


CVarArg 引数として optional のポインタを渡す必要がある場合は、Int(bitPattern:) イニシャライザーを使用して、optional のポインタを Int 値として解釈します。Int 値は、サポートされているすべてのプラットフォームでポインタと同じ C 可変引数呼び出し規約を持ちます。


注意


標準ライブラリ以外で定義された型に対して、CVarArg プロトコルへの準拠を宣言することはサポートされていません。





関連


準拠型


Array

Element が Copyable と Escapable に準拠している場合準拠します。


AutoreleasingUnsafeMutablePointer

Pointee が Copyable と Escapable に準拠している場合準拠します。


Bool

Dictionary

Key が Copyable に準拠し, Key が Escapable に準拠し, Key が Hashable に準拠し, Value が Copyable に準拠し, Value が Escapable に準拠している場合準拠します。


Float

Float80

Int

Int16

Int32

Int64

Int8

OpaquePointer

Set

Element が Copyable, Escapable, Hashable に準拠している場合準拠します。


String

UInt

UInt16

UInt32

UInt64

UInt8

UnsafeMutablePointer

Pointee が Escapable に準拠している場合準拠します。


UnsafePointer

Pointee が Escapable に準拠している場合準拠します。





以下も見よ


C 言語の可変関数


func withVaList<R>([any CVarArg], (CVaListPointer) -> R) -> R

与えられた引数配列から派生した C 言語の va_list 引数を使用して、与えられたクロージャを呼び出します。


struct CVaListPointer


func getVaList([any CVarArg]) -> CVaListPointer

与えられた引数配列から構築された、自動解放ストレージによって裏付けられた CVaListPointer を返します。














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ