Ich hatte über access links aus Wikipedia, aber ich konnte nicht ein klares Bild davon erhalten, welche Zugriffslinks sind und wie sie sich von der Rückadresse einer Funktion unterscheiden. Kann jemand kurz erklären, was ein Zugriffslink ist und warum er auf einem Call-Stack notwendig ist?Was ist ein Zugriffslink auf einem Stapelrahmen?
Antwort
Sie würden tatsächlich solche Paradigma in Pascal
oder Java
, zum Beispiel, nicht in C
erfüllen.
Zum Beispiel in Java, können Sie erklären:
void func1() {
int outer = 2;
int func2() {
int inner = 3;
return inner+outer;
}
int result = func2();
}
Am Ende func1
Ausführung, die result
Variable würden 5 enthalten, die eine Summe von lokal definierten Variablen sind outer
und inner
.
Die access link
dient genau diesem Zweck - den "Zeiger" zum eigentlichen äußeren Umfang in die innere Funktion zu übergeben.
Der gcc
Compiler hat Nested Functions extension, die nicht Teil des C
Standard ist als n.m erwähnt
Ich kopierte den obigen Code und lief in C, kompilierte und gab die richtige Ausgabe, warum Sie sagen, dass dies in C nicht unterstützt wird? – vikkyhacks
Was 'C' Compiler verwenden Sie? – Serge
Ich benutze gcc, ich lief mit 'gcc -std = gnu99 -g -Wall -m32 dateiname.c' – vikkyhacks
- 1. Was ist Stapelrahmen in der Montage?
- 2. Erhalten Stapelrahmen
- 3. Stapelrahmen in C verstehen
- 4. Abrufen des Modulobjekts aus dem Stapelrahmen
- 5. Wie kann ich Perl-Variablen in einem anderen Stapelrahmen lokalisieren?
- 6. Was ist ein #define_WIN32_DCOM in einem visuellen C++ Projekt? Was
- 7. Was ist ein "Slider Interrupt" auf Android
- 8. Was ist ein Schildkrötenobjekt?
- 9. Was ist ein Kontextwechsel?
- 10. in ältestem Stapelrahmen nachdem eine Ausnahme
- 11. Was ist ein "Doppelstapelfehler"?
- 12. Was ist ein UIViewController
- 13. Was ist ein Pushlock?
- 14. Was ist ein Domänenserver?
- 15. Was ist ein Verweis auf einen Zeiger?
- 16. Was ist ein Mitgliedschaftsanbieter auf MVC 5?
- 17. Was ist ein Ereignishandle?
- 18. Was ist ein Bitmuster?
- 19. Was ist ein Zustandsraum?
- 20. Was ist ein Tabellenpräfix?
- 21. Was ist ein "Pinsel"?
- 22. Was ist ein Steckplatz?
- 23. Was ist ein Protokoll?
- 24. Was ist ein tGrid?
- 25. Was ist ein Jamfile?
- 26. Was ist ein Patchset?
- 27. Was ist ein Lambda?
- 28. Was ist ein Datenserialisierungssystem?
- 29. Was ist ein PHP-Framework und was ist ein guter?
- 30. Google AMP: Was ist ein Layout? Was ist ein Behälter?
Solange Sie C verwenden, gibt es keine Zugangsverbindungen. –
Wikipedia sagt, wenn wir Unterroutinen verschachtelt haben, haben wir Zugriffsverknüpfungen und C unterstützt verschachtelte Subroutinen, also sollten wir Zugriffsverknüpfungen in C haben, richtig? – vikkyhacks
Sie werden nicht in C unterstützt. Ihr Compiler kann sie als Erweiterung haben, aber dann sind sie eine Erweiterung zu C, nicht C. –