在Linux的铿锵块?

Clang有一个非常酷的扩展名为block,它带来了真正的lambda函数机制。与相比,gcc的嵌套函数是相当有限的。 但是,试图编译一个简单的程序cc

 #include <stdio.h>

 int main(){
     void(^ hello)(void)= ^(void){
         printf(“Hello,block!\ n”);
     };
    你好();
    返回0;
 }

clang -fblocks cc ,我得到了

 /usr/bin/ld.gold:/tmp/cc-NZ7tqa.o:函数__block_literal_global:cc(.rodata + 0x10):错误:未定义引用'_NSConcreteGlobalBlock'
铿锵声:错误:链接器命令失败,退出代码1(使用-v来查看调用)

似乎我应该使用clang -fblocks cc -lBlocksRuntime ,但后来我得到了

 /usr/bin/ld.gold:错误:找不到-lBlocksRuntime
 (其余与上面相同)

任何提示?

Solutions Collecting From Web of "在Linux的铿锵块?"

在Ubuntu Linux上:

 sudo apt-get install llvm sudo apt-get install clang sudo apt-get install libblocksruntime-dev 

test.c

 #include <stdio.h> int main() { void (^hello)(void) = ^(void) { printf("Hello, block!\n"); }; hello(); return 0; } 

编译:

 clang test.c -fblocks -lBlocksRuntime -o test ./test Hello, block! 

工作正常。

从哪个图书馆你需要链接叮当程序使用块 ,似乎没有简单的方法来解决这个问题,至少到2010年初。