Ada:在程序调用后检查OUT参数是否已更改(从NULL)

Cal*_*ght 1 parameters null ada out

给定一个具有多个不同类型的OUT参数的过程,全部初始化为null,如何在过程调用后检查它们的值是否发生变化?即如果他们不再null.


我认为可能有一种比穿线更好的方法 if (OUTP_1 /= null) and (OUTP_2 /= null) ... then ALL_FINE := TRUE;.

有一个易于应用的解决方案将是伟大的,因为我实际上有许多程序可以检查这一点.不寻求优雅,而是易于实施.

Jim*_*ers 6

Ada将OUT参数视为未初始化.如果未在过程中为其分配值,则不会信任其值.

您可以对程序运行SPARK分析.SPARK分析仪将未设置的OUT参数识别为未初始化的变量.

或者,如果您使用的是Ada 2012,则可以为每个程序定义后置条件.如果使用早期版本的Ada,您可以使用PRAGMA ASSERT创建类似的后置条件.

在调用过程之前将参数设置为NULL对OUT参数没有影响.您似乎将OUT参数与IN OUT参数混淆.