C символ "блок" каретки - PullRequest
       6

C символ "блок" каретки

4 голосов
/ 09 марта 2020

Я заметил, что это объявление с символом каретки (^) закреплено на сайте cdecl.org вверху:

// "cast foo into block(int, long long) returning double"
(double (^)(int , long long ))foo

Может кто-нибудь объяснить, что такое цель символа карета здесь? Это действительно допустимый символ в объявлениях C или это заполнитель для чего-то?

Ответы [ 2 ]

3 голосов
/ 09 марта 2020

Символ каретки является частью расширения языка C для работы с блоков . Блоки являются расширением C, поддерживаемым Clang и Apple G CC. Он не соответствует C (то есть не является частью основного C языка, определенного стандартом C).

1 голос
/ 09 марта 2020

Он известен как Block Variable Declaration. Переменная с типом блока объявляется с использованием обозначения стиля указателя функции, заменяя ^ на *.

...