Verschachtelte Funktionen in C
Im Kontext von C stellt sich die Frage, ob Funktionen innerhalb anderer Funktionen definiert werden können.
Modernes C
In C 11 und späteren Versionen (C 14, C 17) sind durch die Verwendung von Lambda-Ausdrücken verschachtelte Funktionen möglich. Lambdas können innerhalb von Funktionen definiert werden und verhalten sich wie anonyme Funktionen:
int main() { auto print_message = [](std::string message) { std::cout << message << "\n"; }; for (int i = 0; i < 10; i++) { print_message("Hello!"); } return 0; }
C 98 und C 03
In C 98 und C 03 sind verschachtelte Funktionen nicht direkt unterstützt. Ein ähnlicher Effekt kann jedoch durch die Verwendung lokaler Klassen mit statischen Mitgliedsfunktionen erzielt werden:
int main() { struct X { static void a() {} }; X::a(); return 0; }
Obwohl dieser Ansatz den Anschein verschachtelter Funktionen vermittelt, ist er nicht so einfach wie die Verwendung von Lambdas in modernem C.
Das obige ist der detaillierte Inhalt vonKönnen C-Funktionen verschachtelt werden und wie hat sich dies in verschiedenen Standards entwickelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!