Należy pamiętać, że jest to tylko eksperyment myślowy.
Wiem, że globalne (statyczne) vary są złe, a łamanie zasięgu jest w każdym razie złym pomysłem.Czy istnieje sposób na zmianę lokalnej stałej pisanej z * poza * procedura, w której została zadeklarowana?
Rozważmy następujący kod:
function IsItChanged: integer;
const
CanIBeChanged: integer = 0;
begin
Result:= CanIBeChanged;
end;
Zakładając zapisywalnych stałe zostały włączone, w jaki sposób można zmienić wartość CanIBeChanged
spoza zakresu funkcji to zadeklarowanej?
PS Nie Nie zamierzam nigdy używać tego kodu, to tylko kwestia, która jest przedmiotem zainteresowania.
Jaki jest czas życia lokalnej zapisywalnej stałej? Dopóki kod nie opuści metody (jak normalna zmienna lokalna), czy jest udostępniony? W pierwszym przypadku twój kod ma niezdefiniowane zachowanie. – CodesInChaos
@CodeInChaos To naprawdę dziwaczna konstrukcja. Są to naprawdę zmienne globalne. Odpowiednik locali C z pamięcią statyczną. –
Niejasno pamiętałem coś takiego, ale nie byłem już pewien. – CodesInChaos