Рассмотрим приведенный ниже python код:
# Return a function that returns its argument incremented by 'n'
def make_incrementer(n):
def increment(x, n=n):
return x+n
return increment
add1 = make_incrementer(1)
print add1(3) # This prints '4'
Есть ли способ сделать что-то подобное в C? Я хочу, чтобы функция возвращала другую функцию (локальную / вложенную или иную), которая может быть вызвана пользователем.
Просто для ясности, я делаю не хочу:
- вызов другой функции внутри функции и возвращаемое значение этого вычисления
- возвращает указатель на другую функцию из функции
Обратите внимание: я изучил ' Есть ли способ достичь замыканий в C '. Но он не отвечает на вопрос, поскольку все приведенные ответы являются своего рода обходными путями, которые в значительной степени зависят от указателей, внешних библиотек и т. Д. c. Также вопрос довольно старый (9 лет), и я надеюсь, что какой-то компилятор, возможно, добавил поддержку / расширение для того, чтобы сделать что-то подобное с тех пор.