Problem:
Der folgende Code wird fehlerfrei kompiliert, gibt aber eine Unendlichkeit ein Schleife:
int main() { return main(); }
Antwort:
Der Aufruf der Hauptfunktion aus sich selbst in C führt zu undefiniertem Verhalten. Undefiniertes Verhalten bedeutet, dass alles passieren kann, einschließlich:
Der C-Standard besagt ausdrücklich, dass die Hauptfunktion nicht durch einen Ausdruck benannt werden darf. Wenn main sich selbst aufruft, muss der Compiler eine Diagnosemeldung ausgeben und darf den Code nicht kompilieren.
Trotz dieser Standardanforderung geben einige Compiler möglicherweise keine Diagnosemeldung aus und lassen das Kompilieren des Programms nicht zu. Die Ausführung eines solchen Programms ruft jedoch undefiniertes Verhalten hervor.
Compiler-Verhalten:
Compiler sind nicht verpflichtet, alle Regeln des C-Standards durchzusetzen, einschließlich der Regel, die main verbietet nennt sich selbst. Sie können Warnungen oder Fehler ausgeben, aber das genaue Verhalten variiert je nach Compiler und Compiler-Einstellungen.
Auswirkungen:
Der rekursive Aufruf von main ist in C illegal. Selbst wenn ein Compiler dies zulässt, zeigt das Programm ein undefiniertes Verhalten und sollte nicht als zuverlässig angesehen werden.
Das obige ist der detaillierte Inhalt vonKann sich die „Haupt'-Funktion in C rekursiv selbst aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!