斯威夫特有" C型"协议?

时间:2017-12-09 05:38:02

标签: swift

我想将泛型约束为可以用C表示的类型.Swift标准库中是否存在所有C类型符合的协议或类型?

func doWithCType<T:CRepresentable>(cValue: T) {
    // do thing with C type
}

如果不是CRepresentable,可能是CStruct类型?

线索:

使用此C类型:

typedef struct {
    int hodor;
} Hodor;

我强制将结构转换为不兼容的类型(导致崩溃)。这是错误消息:Could not cast value of type '__C.Hodor' (0x1035c0700) to 'Swift.CVarArg' (0x107196240).

我无法找到&#34; __ C&#34;在任何地方,但我都希望C类型有所区别。

1 个答案:

答案 0 :(得分:5)

Swift.CVarArg你需要什么?它适用于可以通过C&#va_list varargs机制传递的类型。

还有CVaListPointer,相当于va_list *。这出现在String(format:)的论据中。

https://developer.apple.com/documentation/swift/cvararg https://developer.apple.com/documentation/swift/cvalistpointer