1

编码

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”的静态成员。块上的文档说“在块的词法范围内声明的局部变量,其行为与函数中的局部变量完全相同。”该文件具有 .mm 扩展名。我错过了什么?

4

1 回答 1

1

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

于 2011-05-09T03:10:25.507 回答