gpt4 book ai didi

delphi - 有没有办法从声明的例程*外部*更改本地类型常量?

转载 作者:行者123 更新时间:2023-12-03 14:51:23 26 4
gpt4 key购买 nike

请注意,这只是一个思想实验。
我知道全局(静态)变量很糟糕,并且在任何情况下破坏范围都是一个坏主意。

考虑以下代码:

function IsItChanged: integer;
const
CanIBeChanged: integer = 0;
begin
Result:= CanIBeChanged;
end;

假设已启用可写常量,如何在声明的函数范围之外更改 CanIBeChanged 的值?

PS 不,我不打算使用此代码,这只是出于兴趣的一个问题。

最佳答案

好吧,这只能通过泄漏指向可写类型常量的指针来完成。下面是一个使用相当复杂的方式来打印野兽数量的示例:

program NaughtyNaughtyVeryNaughty;{$J+}
{$APPTYPE CONSOLE}
procedure Test(out MyPrivatesExposed: PInteger);
const
I: Integer=665;
begin
MyPrivatesExposed := @I;
inc(I);
end;

var
I: PInteger;
begin
Test(I);
Writeln(I^);
Readln;
end.

由于局部变量的范围仅限于定义它的函数,因此上述方法是唯一可能的解决方案。

关于delphi - 有没有办法从声明的例程*外部*更改本地类型常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9655281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com