Nested Functions in C

Come utilizzare funzioni annidate in C.

Le funzioni annidate (nested functions) altro non sono che funzioni dichiarate all'interno di un'altra funzione.
Le nested functions non fanno parte dell' ANSI C, esse rappresentano esclusivamente un'estensione, relativamente utile, del GCC.
Per quanto concerne l'ambito di una funzione annidata possiamo dire che è prettamente locale, richiamarla esterna causerebbe un errore.
Dalla funzione padre (ovvero quella funzione ove è dichiarata la nested), la funzione nested erediterà tutte le variabili.

Graficamente l'impostazione è questa:

1. FUNZIONE PADRE

<--1.a VARIABILI-->   [ int a ]

2. FUNZIONE ANNIDATA

<--2.a VARIABILI-->   [ *-> a]

| return  (...)
| exit


Concludiamo offrendo un esempio d'utilizzo di funzioni nested:

#include <stdio.h>

int main ( void )
{
        int nested (int a, int b)
        {
                return a + b;
        }

        int uno = 5;
        int due = 10;
        fprintf(stdout, "%d + %d = %d\nLa funzione annidata funziona !\n", uno, due, nested(uno,due));
        return 0;
}


Compiliamo ed osserviamo l'output:

$ gcc nested.c -o nested
$ ./nested
5 + 10 = 15
La funzione annidata funziona !


Privacy Policy