プロトコル


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

ElementCopyableEscapable に準拠している場合準拠します。


AutoreleasingUnsafeMutablePointer

PointeeCopyableEscapable に準拠している場合準拠します。


Bool

Dictionary

KeyCopyable に準拠し, KeyEscapable に準拠し, KeyHashable に準拠し, ValueCopyable に準拠し, ValueEscapable に準拠している場合準拠します。


Float

Float80

Int

Int16

Int32

Int64

Int8

OpaquePointer

Set

ElementCopyable, Escapable, Hashable に準拠している場合準拠します。


String

UInt

UInt16

UInt32

UInt64

UInt8

UnsafeMutablePointer

PointeeEscapable に準拠している場合準拠します。


UnsafePointer

PointeeEscapable に準拠している場合準拠します。





以下も見よ


C 言語の可変関数


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

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


struct CVaListPointer


func getVaList([any CVarArg]) -> CVaListPointer

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














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ