首页 > 解决方案 > 了解 C 中的“克拉”函数?

问题描述

我问了其他程序员,他们说克拉^是异或的意思。但似乎克拉有一个晦涩的用法,我并不完全理解。似乎^为类型添加后缀会以某种方式对其进行修改,例如为类型添加后缀如何将其*声明为指针类型。下面的代码有效,但有人可以解释为什么和发生了什么,以及克拉符号如何允许我内联声明匿名函数文字?我不知道你能做到这一点,但我想完全理解这个神秘的功能。

void(^Function)(void);
int main(int argc, char *argv[]) {
    Function = ^{
        int x = 10;
        printf("%d\n", x);
    };
    Function();
    Function = ^{
        putchar(65);
    };
    Function();
    return 0;
}

另外,这是一些编译器扩展还是纯 C?

在此处输入图像描述

标签: cfunctionliterals

解决方案


这是 Apple 对 C 的扩展,称为Blocks,用于Grand Central Dispatch


推荐阅读