我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题。
我正在尝试在我的快速代码中执行此操作
var address = "192.168.1.2"
var port = 8888
initSocket(address, port)
c 函数如下所示:
void initSocket(char *address, int port);
我收到错误:无法将“Void”类型的表达式转换为“CMutablePointer”类型
我似乎找不到有效的解决方案。
我在将字符串从 swift 传递到用 c 编写的函数时遇到严重问题。
我正在尝试在我的快速代码中执行此操作
var address = "192.168.1.2"
var port = 8888
initSocket(address, port)
c 函数如下所示:
void initSocket(char *address, int port);
我收到错误:无法将“Void”类型的表达式转换为“CMutablePointer”类型
我似乎找不到有效的解决方案。
Swift CStrings 与 C 常量字符串无缝协作,所以使用
void initSocket(const char *address, int port);
而不是char*
参数,并将您的address
变量声明为 CString:
var address: CString = "192.168.1.2";
在C中,像这样声明你的参数
void setLastName(const char* lastName){
}
然后在swift中,你可以直接传入一个常规的swift字符串
setLastName("Montego");
关键是在 C 中的 char 之后立即用星号定义变量,例如:const char*