Clang имеет очень классное расширение с именем block , обеспечивающее истинный механизм лямбда-функции для C. По сравнению с block, вложенные функции gcc довольно ограничены. Однако, пытаясь скомпилировать тривиальную программу c.c
:
#include <stdio.h>
int main() {
void (^hello)(void) = ^(void) {
printf("Hello, block!\n");
};
hello();
return 0;
}
с clang -fblocks c.c
, я получил
/usr/bin/ld.gold: /tmp/cc-NZ7tqa.o: in function __block_literal_global:c.c(.rodata+0x10): error: undefined reference to '_NSConcreteGlobalBlock'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
кажется, я должен использовать clang -fblocks c.c -lBlocksRuntime
, но потом я получил
/usr/bin/ld.gold: error: cannot find -lBlocksRuntime
(the rest is the same as above)
Есть подсказки?