Ada无模式子程序参数

时间:2013-07-09 14:13:48

标签: ada

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

之间有什么区别
procedure my_func ( param_1 : in param_type )

procedure my_func ( param_1 : param_type )

我是ada的新手,并且一直在编写我的大部分程序作为后者。该程序按预期编译和运行。

2 个答案:

答案 0 :(得分:6)

没有区别 - 如果没有给出参数模式,编译器会假设“in”。

请参阅18月3日开始的http://www.ada-auth.org/standards/12rm/html/RM-6-1.html行。

- 马丁

答案 1 :(得分:0)

根据Martin的建议,如果未提供,则默认模式为“输入”。

我想补充一点,如果可能的话,有时您可以尝试一些您怀疑的事情。 就像看下面的简单代码一样,我没有给论据“ 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的参数赋任何值。