On 2023-04-04 08:16, Jacob Kroon via fpc-pascal wrote:


Hi Jacob,

 .
 .
But I suspect I have a new problem: With the old Pascal/MT+ compiler
it would appear that local variables declared in functions/procedures
have a life-time that spans the whole program, like a "static"
declared variable in C. With fpc, it looks like locally declared
variables are automatic, put on the stack(?), and so they go out of
existence once out of scope ?

Yes, local variables are declared on stack and their lifetime is indeed equivalent to the time of processing the particular function/procedure.


The program depends on this feature in the old compiler. I did some
googling and found that putting local variables in a "const" section
instead of "var" would make them have a "whole-program" lifetime, but
then I need to provide them with an initial value.

Do I have any other option besides changing from "var" to "const"
everywhere, and provide initial values in all declarations ?

You don't need to change "var" to "const" - if you want to ensure the variables to persist in between the function/procedure runs, you need to move them to the global level, i.e. outside of the functions/procedures. It is not advisable as a general practice (to keep all variables globally), because then you might e.g. access the same variable from multiple functions by mistake, but it would probably solve your issue. Obviously, you might need to solve potential conflicts if you use the same variable names in multiple functions/procedures (e.g. by prepending the function/procedure name to the variable name or something like that).

Tomas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to