Heim > Backend-Entwicklung > C++ > In der C-Sprache verschachtelte Funktionen

In der C-Sprache verschachtelte Funktionen

WBOY
Freigeben: 2023-09-06 13:57:06
nach vorne
1237 Leute haben es durchsucht

In der C-Sprache verschachtelte Funktionen

In einigen Anwendungen stellen wir fest, dass einige Funktionen innerhalb einer anderen Funktion deklariert sind. Dies wird manchmal als verschachtelte Funktion bezeichnet, ist aber eigentlich keine verschachtelte Funktion. Dies wird als lexikalisches Scoping bezeichnet. In C hat das lexikalische Scoping keine Auswirkung, da der Compiler den richtigen Speicherort der inneren Funktion nicht finden kann.

Verschachtelte Funktionsdefinitionen können nicht auf lokale Variablen umgebender Blöcke zugreifen. Sie können nur auf globale Variablen zugreifen. In C gibt es zwei verschachtelte Bereiche: lokal und global. Daher haben verschachtelte Funktionen einige begrenzte Verwendungsmöglichkeiten. Wenn wir eine verschachtelte Funktion wie unten erstellen möchten, wird ein Fehler generiert.

Beispiel

#include <stdio.h>
main(void) {
   printf("Main Function");
   int my_fun() {
      printf("my_fun function");
      // defining another function inside the first function.
      int my_fun2() {
         printf("my_fun2 is inner function");
      }
   }
   my_fun2();
}
Nach dem Login kopieren

Ausgabe

text.c:(.text+0x1a): undefined reference to `my_fun2&#39;
Nach dem Login kopieren

Aber eine Erweiterung des GNU C-Compilers ermöglicht die Deklaration verschachtelter Funktionen. Dazu müssen wir das Schlüsselwort auto vor der Deklaration der verschachtelten Funktion hinzufügen.

Beispiel

#include <stdio.h>
main(void) {
   auto int my_fun();
   my_fun();
   printf("Main Function</p><p>");
   int my_fun() {
      printf("my_fun function</p><p>");
   }
   printf("Done");
}
Nach dem Login kopieren

Ausgabe

my_fun function
Main Function
Done
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonIn der C-Sprache verschachtelte Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage