2

Ada のパラメーターがモードレスのままになっている場合、どうなりますか?

違いは何ですか

procedure my_func ( param_1 : in param_type )

procedure my_func ( param_1 : param_type )

私はADAを初めて使用し、ほとんどの手順を後者として書いています。プログラムは期待どおりにコンパイルおよび実行されます。

4

2 に答える 2

6

違いはありません。パラメーター モードが指定されていない場合、コンパイラは "in" を想定します。

http://www.ada-auth.org/standards/12rm/html/RM-6-1.html 18/3 から始まる行を参照してください。

-- マーティン

于 2013-07-09T14:35:17.623 に答える
0

マーティンが提案したように、提供されていない場合、デフォルトのモードは '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 では引数に値を割り当てることができないためです。

于 2020-04-29T12:56:54.060 に答える