frage zu fortran, pascal, volatile
-
Hallo allerseits,
würde gerne etwas näher wissen, wass implementationsabhängige Schlüsselwörter wie fortran, pascal sind. Angeblich ermöglichen sie erzeugte Unterprogramme der genannten Sprachen aufzurufen...
P.S. Wie kann man die Variablen eines anderen Programms verändern, wenn diese mit volatile deklariert wurden? Wie kann man in diesem Sinne erfahren, welche Variablen eines laufenden Programms überhaupt veränderbar sind - habe in meinem Buch, dass ich lese nur eine Anmerkung, jedoch keine näheren Informationen über diese Schlüsselwörter.
-
@clamer
die Keywörter gibt es nicht in ISO C, vielleicht hat dein Compiler so etwas, dann benutzt man die wahrscheinlich so#include <stdio.h> fortran float program(int a); int main() { int i=12; program(i); printf("%d\n",i); //i sollte nun 10 sein, wenn CbR }
c das FORTRAN Programm real function program(m) integer m c if(m .gt. 10) m=10 c return end
wobei ich da eigentlich ein Problem sehe, bei der Kombination FORTRAN C, da C nur Call-by-Value und FORTRAN nur Call-by-Reference kann.
volatile bedeutet, dass der Compiler diese Variable nicht wegoptimieren darf und auf jeden Fall anlegen muss, dass ist wichtig, wenn man von einer anderen Programmiersprache drauf zugreifen will, da es sonst sein kann, dass der Compiler die Werte einfach in die CPU Register packt oä.
[ Dieser Beitrag wurde am 24.10.2002 um 23:53 Uhr von kingruedi editiert. ]
-
Original erstellt von clamer:
**
Wie kann man die Variablen eines anderen Programms verändern, wenn diese mit volatile deklariert wurden? Wie kann man in diesem Sinne erfahren, welche Variablen eines laufenden Programms überhaupt veränderbar sind.**mit c alleine eigentlich garnicht das sagt dem compiler einfach das er variablen, die innerhalb von z.b. blöcken vom programm nicht verändert werden, nicht wegoptimieren darf (d.h. immer über den speicher auf den wert zu greiffen nie aus kopien in den registern).
das spielt z.b. dann eine rolle wenn man mit einer os api oder so variablen hat die vom betreibssystem geupdated werden.edit: ein par kommas sind manchmal sinnvoll (ich hasse grammatik etc. )
[ Dieser Beitrag wurde am 24.10.2002 um 23:56 Uhr von japro editiert. ]
[ Dieser Beitrag wurde am 24.10.2002 um 23:57 Uhr von japro editiert. ]
-
Hi,
soweit ich weiss, sagen 'fortran' oder 'pascal' (zumindest beim bc) nur etwas
darueber aus, wie Argumente auf den Stack gelegt werden und wer dafuer
verantwortlich ist, den Stack wieder aufzuraeumen (die aufgerufene Funktion
oder die aufrufende Funktion etc.).Kann mich auch irren, meine aber beim bc sei das so. 'pascal' wird allerdings
von neuen BCB's nicht mehr akzeptiert, oder zumindest beim BCB 6 nicht (musste
ich auf der Arbeit schon feststellen).mfg
v R
-
GOD IS REAL UNLESS DECLARED INTEGER
-
@vR
weisst du den wie die Argumente dann bei fortran behandelt werden, mit den CbR und CbV?
-
@vR
weisst du den wie die Argumente dann bei fortran behandelt werden, mit den CbR und CbV?Wie das in Fortran ist, weiss ich nicht. Weiss nur, dass in Pascal die Parameter
einer Funktion in "richtiger" Reihenfolge (so, wie man sie im Funktionskopf
deklariert) auf den Stack gelegt werden und es der aufgerufenen Funktion
ueberlaesst, den Stack wieder aufzuraeumen.In C werden die Parameter einer Funktion in "umgekehrter" Reihenfolge (also
von rechts nach links) auf den Stack gelegt und es der aufrufenden Funktion
ueberlaesst, den Stack wieder aufzuraeumen.mfg
v R