如果Ada中的参数无模式,会发生什么?
之间有什么区别
procedure my_func ( param_1 : in param_type )
和
procedure my_func ( param_1 : param_type )
我是ada的新手,并且一直在编写我的大部分程序作为后者。该程序按预期编译和运行。
答案 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的参数赋任何值。