Этот код:Как это C-код может иметь Лямбда
#include <stdio.h>
int main()
{
void (^a)(void) =^void() { printf("test"); } ;
a();
}
Compile без предупреждения с лязгом -Weverything -pedantic -std = c89 (версия лязг-800.0.42.1) и печать test
.
Я не мог найти информацию о стандарте C, имеющем лямбда, а также gcc имеет собственный синтаксис для лямбда, и было бы странно, если бы они сделали это, если бы существовало стандартное решение.
Невозможно воспроизвести с 'clang version 3.8.0-2ubuntu4' на Ubuntu 16.04. Сбой: ошибка: блокировка поддержки отключена - скомпилируйте с -fblocks или выберите цель развертывания, которая их поддерживает. – usr
Блоки - это расширение [clang extension] (http://clang.llvm.org/docs/BlockLanguageSpec.html). – StoryTeller
C не может иметь этот код. Что-то компилятор специфичен. –