Ada の使用 (GNAT): 特定の値の 10 のべき乗を決定する必要があります。最も明白なアプローチは、対数を使用することです。しかし、それはコンパイルに失敗します。
with Ada.Numerics.Generic_Elementary_Functions;
procedure F(Value : in Float) is
The_Log : Integer := 0;
begin
The_Log := Integer(Log(Value, 10));
G(Value, The_Log);
end;
エラー:
- utility.adb:495:26: 「ログ」が表示されない
- utility.adb:495:26: a-ngelfu.ads:24 の非表示宣言、482 行のインスタンス
- utility.adb:495:26: a-ngelfu.ads:23 の非表示宣言、482 行目のインスタンス
そのため、パッケージを参照しようとしましたが、それも失敗しました:
with Ada.Numerics.Generic_Elementary_Functions;
procedure F(Value : in Float) is
The_Log : Integer := 0;
package Float_Functions is new Ada.Numerics.Generic_Elementary_Functions (Float);
begin
The_Log := Integer(Float_Functions.Log(Value, 10));
G(Value, The_Log);
end;
エラー:
- utility.adb:495:41: 候補の解釈が実際のものと一致しません:
- utility.adb:495:41: "Log" の呼び出しで引数が多すぎます
- utility.adb:495:53: 期待される型 "Standard.Float"
- utility.adb:495:53: a-ngelfu.ads:24 の「Log」の呼び出しで型の汎用整数 ==> が見つかりました、482 行目のインスタンス