2016-10-17 7 views
2

я наткнулся на следующий фрагмент кода:Что означает^{} в C?

void solve_symbols() { 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
    getClass = dlsym(RTLD_DEFAULT, "objc_getClass"); 
    getClassObj = dlsym(RTLD_DEFAULT, "object_getClass"); 
    registerName = dlsym(RTLD_DEFAULT, "sel_registerName"); 
    respondsToSelector = dlsym(RTLD_DEFAULT, "class_respondsToSelector"); 
    msgSend = dlsym(RTLD_DEFAULT, "objc_msgSend"); 
    }); 
} 

код можно найти здесь: GitHub:ParasiteLoader/loader.c

Что ^{ getClass = dlsy... } делать/в виду?

+1

это называется Блок https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithBlocks/WorkingwithBlocks.html –

+4

@KeithNicholas Я считаю, что блок является расширением C. Новый тип вводится в C и, по расширению, Objective-C, C++ и Objective-C++ 'http://clang.llvm.org/docs/BlockLanguageSpec.html –

+1

Для людей, которые прыгнули, чтобы отредактировать это с нерелевантными заголовками и тегами, прежде чем делать это, взгляните на ссылку OP. Благодарю. –

ответ

0

Он называется блоком, и это дополнение уровня языка к C и Obj-C. Это функция, которая обрабатывается как объект. Это реализация концепции closure в C. Добавляет более функциональный аромат программирования.

Вы можете найти синтаксис и практика использования рекомендаций в этой article

 Смежные вопросы

  • Нет связанных вопросов^_^