如何将Swift字符串传递给ac函数?

Mad*_*erg 5 c xcode input-parameters swift

我在将字符串从swift传递到用c编写的函数时遇到了很大的麻烦。

我想在我的快速代码中做到这一点

var address = "192.168.1.2"
var port = 8888

initSocket(address, port)
Run Code Online (Sandbox Code Playgroud)

c函数如下所示:

void initSocket(char *address, int port);
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:无法将'Void'类型的表达式转换为'CMutablePointer'类型

我似乎找不到有效的解决方案。

Woj*_*wka 5

Swift CStrings可与C常量字符串无缝协作,因此请使用

void initSocket(const char *address, int port);
Run Code Online (Sandbox Code Playgroud)

而不是char*参数,然后将address变量声明为CString:

var address: CString = "192.168.1.2";
Run Code Online (Sandbox Code Playgroud)

  • 您可能要更新该问题。使用Swift 2.2或更高版本时,Swift字符串不会自动桥接到C字符串。C字符串现在是`UnsafePointer <UInt8>`,Swift字符串可以自动桥接到该字符串。语言中已删除类型“ CString”。 (4认同)