Related articles |
---|
modifying constants in Fortran and elsewhere gah4@u.washington.edu (gah4) (2023-07-10) |
Re: modifying constants in Fortran and elsewhere tkoenig@netcologne.de (Thomas Koenig) (2023-07-15) |
Re: modifying constants in Fortran and elsewhere DrDiettrich1@netscape.net (Hans-Peter Diettrich) (2023-07-16) |
Re: modifying constants in Fortran and elsewhere tkoenig@netcologne.de (Thomas Koenig) (2023-07-16) |
Re: modifying constants in Fortran and elsewhere gah4@u.washington.edu (gah4) (2023-07-16) |
Re: modifying constants in Fortran and elsewhere gah4@u.washington.edu (gah4) (2023-07-16) |
Re: modifying constants in Fortran and elsewhere david.brown@hesbynett.no (David Brown) (2023-07-17) |
Re: modifying constants in Fortran and elsewhere gah4@u.washington.edu (gah4) (2023-07-17) |
From: | David Brown <david.brown@hesbynett.no> |
Newsgroups: | comp.compilers |
Date: | Mon, 17 Jul 2023 13:09:43 +0200 |
Organization: | Compilers Central |
References: | 23-07-003 |
Injection-Info: | gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="81027"; mail-complaints-to="abuse@iecc.com" |
Keywords: | history, forth |
Posted-Date: | 17 Jul 2023 12:18:48 EDT |
In-Reply-To: | 23-07-003 |
On 11/07/2023 04:42, gah4 wrote:
> A potential bug since the earliest days of Fortran is passing a
> constant to a subroutine, and then changing the value of the dummy
> argument.
>
> In at least some Fortran system, this modifies the value of a constant
> used other places in a program.
>
> As this was known when PL/I was designed, it is defined such that
> modifiable constants are passed to called procedures. C avoids it by
> not allowing the & operator on constants. (Though K&R allows
> modification of string constants.)
>
> Somehow, in all the years, that feature was never added to Fortran.
>
> It is easy to write programs and test for it, but I wonder if there
> are any stories for real program that had this bug, and even better,
> stories about the difficulty of finding it, or problems caused by it.
I don't think any language can beat Forth here:
1 .
=> 1 ok
1 1 + .
=> 2 ok
: 1 2 ;
=> ok
1 .
=> 2 ok
1 1 + .
=> 4 ok
If you want to redefine the meaning of a number, you just define it like
any other identifier.
Return to the
comp.compilers page.
Search the
comp.compilers archives again.