У нас может быть вложенная функция в C? Каково использование вложенных функций? Если они существуют в C, их реализация отличается от компилятора до компилятора?
Вы не можете определить функцию внутри другой функции в стандарте C.
Вы можете объявить функцию внутри функции, но это не вложенная функция.
gcc имеет расширение языка, которое позволяет использовать вложенные функции . Они нестандартны и, как таковые, полностью зависят от компилятора.
Вложенные функции не являются частью ANSI C , однако они являются частью Gnu C ].
Нет, вы не можете вложенная функция в C
. Самое близкое, что вы можете сделать, - это объявить функцию внутри определения другой функции. Однако определение этой функции должно появляться вне тела любой другой функции.
Например.
void f(void)
{
// Declare a function called g
void g(void);
// Call g
g();
}
// Definition of g
void g(void)
{
}
Как уже ответили другие, стандарт C не поддерживает вложенные функции.
Вложенные функции используются в некоторых языках для включения нескольких функций и переменных в контейнер (внешняя функция), так что отдельные функции (за исключением внешней функции) и переменные не видны снаружи.
В C это можно сделать, поместив такие функции в отдельный исходный файл. Определите основную функцию как глобальную, а все другие функции и переменные как static . Теперь вне этого модуля видна только основная функция.
Нет, их нет в C.
Они используются в таких языках, как Паскаль, по (как минимум) двум причинам: