|
Für die COC (Checksum on Code) C-Library (entwickelt für Atari ST mit PureC) wurde auch ein Binding für PurePascal entworfen. Dies gelang aber schlussendlich nicht ganz zufriedenstellend. Unten sind einige der damals aufgetretenen Probeme festgehalten, hier ist die spez. Version von COC_PAS.C, die mittels #define PP eigentlich einen Objektcode erzeugen sollte, der dann in DEMO_COC.PAS eingebunden werden könnte. Weitere Seiten: Probleme beim Einbinden von PureC Funktionen in ein Pure-Pascal ProgrammErkenntnisse aus einem Versuch mit SaPrSelfTest (COC)Michael Vorburger, SG-CH (Juli 1993) Folgende Probleme stellen sich (unter evtl. vielen anderen mehr...) bei der Verwendung von PureC (oder teilweise wahrscheinlich auch bei Objektdateien aus anderen Quellen) in PurePascal Programmen. Das grundsätzliche Vorgehen ist im Handbuch so erklärt:
Bei etwas komplexeren Routinen stellen sich aber Probleme en masse. Die mir bisher bekannten sind im folgenden zusammengefasst (mit Lösungsvorschlag). Problem: Es müssen die Bibliotheksroutinen aus PureC müssen benutzt werden; gleichnamige aus PurePascal stürzen evtl. ab (besonders Ubergabe von Strings ist problematisch).
Problem: Funktionsdeklaration/Parameterübergabe: gerade NICHT mit pascal
Problem: Zugriff auf Basepage geht nicht mehr über _BasPag (wie in PC)
Problem: Ein grosses Problem ist auch, dass der in PurePascal integrierte Linker keine Objektmodule mit eigenem DATA- oder BSS-Segment akzeptiert.
Problem: Für den Operator % (modulo) wird bei der Anwendung auf Longs (bei ints gibt's inline code) eine Bibliotheksroutine von irgendwo dazugelinkt, die PP nicht finden kann.
Problem: Strings! PP und PC legen Strings verschieden ab (in Pascal- und C-Notation halt; mit Längenbyte oder mit #0-Terminator). Bei SaPrProgName führt das zu einem Problem, weil es im PP-Programm definiert wird, der Zugriff darauf aber in PC erfolgt.
UBYTE l=SaPrProgName[0]; UBYTE i; for( i=0; i<l; i++ ) SaPrProgName[i]=SaPrProgName[i+1]; SaPrProgName[l]=0; |
|