Ada无模式子程序参数

问题描述 投票:2回答:2

如果Ada中的参数处于无模式状态,会发生什么?

之间有什么区别>>

procedure my_func ( param_1 : in param_type )

procedure my_func ( param_1 : param_type )

我对ada还是陌生的,并且一直在编写大多数程序。该程序将编译并按预期运行。

如果Ada中的参数处于无模式状态,会发生什么?过程my_func(param_1:在param_type)和过程my_func(param_1:param_type)有什么区别?我是ada的新手。

没有区别-如果未给出参数模式,则编译器将假定为“ in”。
请参阅http://www.ada-auth.org/standards/12rm/html/RM-6-1.html行以18/3开头。
-马丁

如Martin所建议,如果未提供,默认模式为'in'。

我想补充一点,如果可能的话,您有时可以尝试一些您怀疑的事情。就像看下面的简单代码一样,我没有给论据“ no_1”指定任何模式。就像我看到的那样,我为其分配了'no_2'的值。
with Ada.Text_IO; use Ada.Text_IO; procedure just_testing is procedure get_value (no_1 : Integer); procedure get_value (no_1 : Integer) is no_2 : Integer := 2; begin no_1 := no_2; end get_value; begin Put("auto mode"); end just_testing;

而且当我编译这段代码时,请看我们作为错误得到的内容。

>gnatmake just_testing.adb gcc -c just_testing.adb just_testing.adb:10:09: assignment to "in" mode parameter not allowed gnatmake: "just_testing.adb" compilation error

因此,编译器明确指出默认模式为'in',因为我们无法为模式为in的参数赋任何值。
ada
2个回答
6
投票
-马丁

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.