こんにちは、単純なコードのはずなのにコンパイル エラーが見つかりました。目的は、環境変数をデフォルト値の一部として使用することです。Ada95を使っているので、バージョンのせいなのかなと。
私たちが述べた「モデル」は、次のような外観 (何か) です。
Default_Override_Message_Text : Ada.Strings.Unbounded.Unbounded_String
:= Ada.Strings.Unbounded.To_Unbounded_String(
Gnat.Os_Lib.Getenv( "DATA_FILES" ) &
"/override_required.txt" );
&でエラーが発生します:
invalid operand types for operator & invalid operand types for operator "&"
ところで、これでいい。
Default_Override_Message_Text : Ada.Strings.Unbounded.Unbounded_String
:= Ada.Strings.Unbounded.To_Unbounded_String(
"DATA_FILES" & "/override_required.txt" );
私はインターネットと本に目を向けましたが、それはうまくいくはずですが、ここではタイピングなどの問題があります。PLEAC の例でもエラーが発生します。
- デフォルト値の設定
- GetEnv の例
- 「GetEnv()」を見てください:高度な Linux プログラミング
username : string := Gnat.Os_Lib.Getenv("USER");
DATA_FILES : String := Gnat.Os_Lib.Getenv( "DATA_FILES" );
エラーが発生します:
- ビルダーの結果は、型 "Standard.String" が期待されます181:37型 "Standard.String" が期待されます ビルダーの結果
- Builder の結果、タイプ "System.Strings.String_Access" 181:37が見つかりました
そのアプローチでできると思った
DATA_FILES : String := Gnat.Os_Lib.Getenv( "GPS_DATA_FILES" );
Default_Override_Message_Text : Ada.Strings.Unbounded.Unbounded_String
:= Ada.Strings.Unbounded.To_Unbounded_String(
DATA_FILES & "/override_required.txt" ); -- ERROR
DATA_FILES_2 : String := "GPS_DATA_FILES"; -- WORKS
Default_Override_Message_Text : Ada.Strings.Unbounded.Unbounded_String
:= Ada.Strings.Unbounded.To_Unbounded_String(
DATA_FILES_2 & "/override_required.txt" ); -- WORKS
DATA_FILES_2
GetEnv() から値を正しく割り当てることができれば、(私のコンパイラによると) オプションと 同様に、必要なすべてが機能するように見えるため、GetEnv にはまだ何か問題があります。
誰かが私のエラーを指摘できますか? それとも、Ada95 は私が見ている例とは異なるルールを使用していますか?