我想将泛型约束为可以用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类型有所区别。
答案 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