了解 C 中的 "Carat" 函数?

Understanding "Carat" functions in C?

问过其他程序员,他们说carat^是异或的意思。但似乎我不完全理解 carat 的模糊用法。似乎 ^ 后缀类型以某种方式修改它,就像如何用 * 后缀类型声明它是指针类型。下面的代码有效,但有人可以解释为什么以及发生了什么,以及克拉符号如何允许我内联声明匿名函数文字吗?我不知道你可以这样做,但我想完全理解这个神秘的功能。

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 语言?

这是一个名为 Blocks, for Grand Central Dispatch 的 C 的 Apple 扩展。