A nested function is a function defined inside the definition of another
function. It can be defined wherever a variable declaration is
permitted, which allows nested functions within nested functions.
Within the containing function, the nested function can be declared prior to
being defined by using the auto keyword. Otherwise, a nested
function has internal linkage. The language feature is an orthogonal
extension to C89 and C99, implemented to facilitate porting programs developed
with GNU C.
A nested function can access all identifiers of the containing function that precede its definition.
Restrictions and limitations
A nested function must not be called after the containing function exits.
A nested function cannot use a goto statement to jump to a label in the containing function, or to a local label declared with the __label__ keyword inherited from the containing function.
Related References