gpt4 book ai didi

objective-c - 将 block 与 LLVM GCC 4.2 一起使用时出现编译问题

转载 作者:搜寻专家 更新时间:2023-10-30 20:22:35 25 4
gpt4 key购买 nike

我刚才写了一个要点:https://gist.github.com/611157 .它编译并工作正常。

我最近回来看它,它不再符合要求。

我注意到它使用 LLVM 2.0 编译,没有任何问题或警告(然后运行并工作!)

使用 LLVM GCC 4.2 无法编译。我收到以下错误

error: incompatible block pointer types initializing 'signed char (^)(struct objc_object *, struct NSString *)', expected 'BOOL (^)(struct objc_object *, struct objc_object *)'

我觉得我的声明缺失或错误,但我不知道,所以我想我会问。

有什么想法吗?

最佳答案

问题是你的 block 有类型:

BOOL (^blockRelationship)(id,id)

但是初始化中的第二个参数和方法声明中的参数类型都是NSString*

将您的 block 定义更改为

BOOL (^blockRelationship)(id,NSString*)=^(id obj,NSString* relationship) { ... } ;

我已经在 GCC 4.2、GCC 4.2 LLVM 和 Clang LLVM 1.6 中测试了上述内容。

使用 id 第二个参数,在前两种情况下,我在初始化行和将它作为参数传递给 toDictionaryBlockingRelationships 的行上都出现了错误: 在 Clang 案例中,我完全没有出错。

NSString*为第二个参数,3次编译都没有报错。

关于objective-c - 将 block 与 LLVM GCC 4.2 一起使用时出现编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6503823/

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