2016-10-17 49 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我相信Block是一個C擴展'一個新的派生類型被引入到C中,並且被擴展爲Objective-C,C++和Objective-C++ http://clang.llvm.org/docs/BlockLanguageSpec.html –

+1

對於那些跳過編輯無關標題和標籤的人,請在此之前查看OP的鏈接。謝謝。 –

回答

0

它被稱爲塊,它是C和Obj-C的語言級別的補充。它是一個像對象一樣對待的函數。那些,它在C中實現了closure概念。增加了更多的功能編程風格。

你可以找到在這個article