Hallo
Ich habe eine - vielleicht naive - Frage. Kann man eine Funktion A bei Bedarf eine Funktion B aufrufen lassen und die Funktion B die Funktion A. Das scheint nur für einen der beiden Fälle möglich zu sein, nämlich für die aufrufende Funktion, die im Programm nach der aufgerufen Funktion steht. Lässt sich dieses Problem umgehen? Ansonsten muss ich mein Projekt Langzahlarithmetik neu aufbauen. Ich danke im Voraus für Vorschläge.
Neuling
Gegenseitiger Funktionsaufruf
-
- Beiträge: 33
- Registriert: Do 30. Dez 2021, 01:08
- OS, Lazarus, FPC: Windows 10 (L 2.2.0 FPC 3.2.2)
- CPU-Target: 64Bit
Gegenseitiger Funktionsaufruf
Ich nehme jede berechtigte Kritik an. Es sei denn, diese fällt von oben herab vor meine Füße.
Programmieren macht Spaß.
Programmieren macht Spaß.
Re: Gegenseitiger Funktionsaufruf
Das Zauberwort heisst "forward".
https://wiki.freepascal.org/Forward_Referencing
https://www.freepascal.org/docs-html/ref/refse97.html
https://wiki.freepascal.org/Forward_Referencing
https://www.freepascal.org/docs-html/ref/refse97.html
Re: Gegenseitiger Funktionsaufruf
Du musst für die zweite Funktion vor ihrere Verwendung eine "forward"-Deklaration machen, also nur die Deklaration, ähnlich wie im Interface-Teil einer Unit. Die Implementierung kann später folgen. Nun kennt der Compiler die zweite Funktion, und du kannst sie aus der ersten Funktion aufrufen.Neuling hat geschrieben: So 9. Jan 2022, 18:37 Ich habe eine - vielleicht naive - Frage. Kann man eine Funktion A bei Bedarf eine Funktion B aufrufen lassen und die Funktion B die Funktion A. Das scheint nur für einen der beiden Fälle möglich zu sein, nämlich für die aufrufende Funktion, die im Programm nach der aufgerufen Funktion steht. Lässt sich dieses Problem umgehen? Ansonsten muss ich mein Projekt Langzahlarithmetik neu aufbauen. Ich danke im Voraus für Vorschläge.
Code: Alles auswählen
function A(x: Integer): Integer; forward;
function B(x, y: Integer): Integer;
begin
// implementieren; kann A() aufrufen
end;
function A(x: Integer): Integer;
begin
// implementieren; kann B() aufrufen
end;
Zuletzt geändert von wp_xyz am So 9. Jan 2022, 19:52, insgesamt 1-mal geändert.
-
- Beiträge: 33
- Registriert: Do 30. Dez 2021, 01:08
- OS, Lazarus, FPC: Windows 10 (L 2.2.0 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Gegenseitiger Funktionsaufruf
Danke für die Antwort. Ich sollte wohl erst meine Nase in die Literatur stecken und dann programmieren. Ich werde es versuchen. Noch einmal ein herzliches Danke.
Neuling
Neuling
Ich nehme jede berechtigte Kritik an. Es sei denn, diese fällt von oben herab vor meine Füße.
Programmieren macht Spaß.
Programmieren macht Spaß.