Понимание функций "Карат" в C? - PullRequest
0 голосов
/ 04 февраля 2020

Я спросил других программистов, и они сказали, что карат ^ означает xor. Но, кажется, есть неясное использование карата, которое я не до конца понимаю. Кажется, что ^ суффикс типа изменяет его каким-то образом, например, как суффикс типа с * объявляет его типом указателя. Приведенный ниже код работает, но кто-то может объяснить, почему и что происходит, и как символ карата позволяет мне объявлять литералы анонимной функции встроенными? Я не знал, что вы могли бы сделать это, но я хочу полностью понять эту таинственную функциональность.

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?

enter image description here

1 Ответ

2 голосов
/ 04 февраля 2020

Это расширение Apple до C, называемое Blocks , для Grand Central Dispatch .

...