改变它在 Ada 中的价值的常量

Constant that changes it's value in Ada

知道常量地址的东西可以改变它吗?或者 Ada 对此有保障吗?

我目前正在做一个大项目,我无法阅读项目的所有代码。但我必须调试它的一部分。我有奇怪的麻烦。事实上,我已经改变了这样的变量声明 My_Var : constant Integer :=1; 在我的包裹中(我们称之为 My_Package) 然后在项目中对我的变量做一些事情(黑盒子) 当我最后执行该代码时,

My_Package.My_Var<=0吧returnsTrue

我的问题是,知道我常量的地址的东西可以改变它吗?或者 ada 是安全的吗?

PS:我做了一个 (gdb) watch My_Package.My_Var 并且没有停止程序,直到我在 if My_Package.My_Var<=0

之后得到我的错误

PS PS:我还尝试更改 function 中的常数,返回一个常数值,错误随之消失(但没有帮助我看到变量被修改) 希望您能够帮助我。

谢谢

知道常数地址的东西也许能够改变它。例外情况是常量存储在 (EP)ROM 中,或者编译器与操作系统合谋将其放入可执行文件的只读部分。

一般来说,Ada 允许您解决所有的安全问题,如果您真的足够关心完成所需的工作的话。