Wie bereits in anderen Antworten erwähnt, erlauben Standard-C und C++ nicht, dass Sie verschachtelte Funktionen definieren. (Einige Compiler können dies als Erweiterung zulassen, aber ich kann nicht sagen, dass ich es gesehen habe).
Sie können eine andere Funktion innerhalb einer Funktion deklarieren, damit sie aufgerufen werden kann, aber die Definition dieser Funktion muss außerhalb der aktuellen Funktion existieren:
#include
#include
int main( int argc, char* argv[])
{
int foo(int x);
/*
int bar(int x) { // das geht nicht
return x;
}
*/
int a = 3;
printf( "%d\n", foo(a));
return 0;
}
int foo( int x)
{
return x+1;
}
Ein Funktionsdeklaration ohne expliziten 'Linkage-Spezifizierer' hat eine extern
Verknüpfung. Daher ist die Deklaration des Namens foo
in der Funktion main()
zwar auf main()
beschränkt, aber sie wird auf die foo()
-Funktion verweisen, die später in der Datei definiert ist (oder in einer anderen Datei, wenn foo()
dort definiert ist).