И, если да, то как вы его используете? (синтаксис)Использует ли C лямбда-выражения?
Кроме того, почему и почему C не поддерживает лямбда-выражения?
И, если да, то как вы его используете? (синтаксис)Использует ли C лямбда-выражения?
Кроме того, почему и почему C не поддерживает лямбда-выражения?
Нет, C не поддерживает лямбда-выражения.
Если вы хотите использовать C++, Boost имеет библиотеку, которая эмулирует lambdas. Кроме того, C++ 0x будет иметь встроенную поддержку лямбда-выражений.
В то время не было большого спроса на поддержку выражения лямбда в C, поэтому язык его не поддерживал.
Нет, C не имеет лямбда-выражений (или любого другого способа создания замыканий).
Это, скорее всего, потому, что C является языком низкого уровня, который позволяет избежать функций, которые могут иметь плохую производительность и/или сделать язык или систему времени выполнения более сложными.
C не поддерживает лямбда-выражения или любые другие способы (в рамках стандарта языка) для динамического создания функций - все функции в стандарте создаются во время компиляции. Я предполагаю, что причина заключается в том, чтобы сохранить язык небольшим, простым, худым и очень быстрым, при этом вряд ли нужна поддержка «библиотеки времени исполнения» - важна для языка, который так широко используется в программировании операционных систем, драйверов устройств, встроенных приложений и так далее.
Lambda выражение не требует динамического создания функции. Это просто создание объекта, который ссылается на (возможно, безымянную) функцию, которая уже скомпилирована. –
@Mike, в C вы можете ссылаться на существующие функции с помощью указателя (действительно, _mention_ имени функции «распадается» на указатель на нее, так что это довольно элегантно и выполнимо). –
Я думаю, что у Майка есть точка. Теоретически вы могли бы иметь в C синтаксис лямбда-стиля без замыканий, чтобы определить внутри выражения функцию, подобную 'x => x * x', и оценить указатель на эту функцию, не нарушая указанное вами ограничение. Только тогда, когда вы хотите, чтобы ваш лямбда достиг своего окружения, становится невозможным с помощью обычного указателя функции C, состоящего только из адреса кода. Независимо от того, справедливо ли такие контекстно-свободные функции следует называть «лямбдами» или нет, я не знаю. –
... love you. И теперь мне нравится Stack Overflow, потому что это было быстро! – shosh