gpt4 book ai didi

c++ - 带有局部变量声明的 dispatch_apply 不能在 C++ 方法实现中编译

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:59 25 4
gpt4 key购买 nike

代码

class XXX
{
vector<Record> getAll()
{
dispatch_apply(3, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(size_t i) {
for (int j = 0; j < ...; ++j)
{ ... }
});
}
}

不编译,说“‘int XXX::j’不是‘class’的静态成员”。 doc on blocks说“在 block 的词法范围内声明的局部变量,其行为与函数中的局部变量完全相同。”该文件具有 .mm 扩展名。我错过了什么?

最佳答案

你的代码是正确的,clang 会编译它。一般来说,clang 的 C++ block 支持比 gcc 好很多,如果可以的话,你想使用它。如果你需要使用 gcc 有一个解决方法,使用::j 来引用 j。然而,这是非法的 C++ 并且 clang 会阻塞它,因此您可能希望以涉及的编译器为条件...

关于c++ - 带有局部变量声明的 dispatch_apply 不能在 C++ 方法实现中编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5620773/

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