gpt4 book ai didi

c - 在 SWIFT 3 中将函数分配给 void 指针列表时出错?

转载 作者:行者123 更新时间:2023-11-30 16:40:12 25 4
gpt4 key购买 nike

最近开始使用 Swift 3.0 和 Xcode-8.0 进行编码面临将 swift 类函数地址分配给结构体中定义的 void 指针列表的问题

文件.h

typedef struct MYStruct
{
void ** funptr; //The list of function pointer addr
size_t funCount;

} MYStruct;

file1.swift

.....
func Dummy()
{

}

func utility()
{
var myStructObj = MYStruct()

myStructObj.funptr = &Dummy() //Error: Cannot assign value of type '() -> Int32' to type 'UnsafeMutablePointer<UnsafeMutableRawPointer?>!'

......

//需要将此结构体传递给C函数,在C函数中会调用延迟函数执行

  cfunc(&myStructObj);
......

}

请建议我解决,提前致谢

最佳答案

从 swift 语言的理解来看,我们不能像 C 那样直接通过引用获取函数地址

在swift中,通过符号获取函数地址的唯一方法,一旦你构建了程序,使用objdumpnm来获取您需要将其作为函数指针传递给 C 调用例程的函数符号

这完全是手动过程。我能够通过这种方式实现。

关于c - 在 SWIFT 3 中将函数分配给 void 指针列表时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46769968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com