我是 ada 的新手,我想定义一个矢量包并能够将它传递给一个方法,我应该在哪里定义包,这是我需要的代码
package Document is new Ada.Containers.Vectors(Positive,Unbounded_String);
use Document;
我不知道放在哪里,所以它会对主文件和另一个函数文件可见。
我是 ada 的新手,我想定义一个矢量包并能够将它传递给一个方法,我应该在哪里定义包,这是我需要的代码
package Document is new Ada.Containers.Vectors(Positive,Unbounded_String);
use Document;
我不知道放在哪里,所以它会对主文件和另一个函数文件可见。
如果您使用 GNAT(来自 AdaCore 的 GPL 版本或 FSF GCC 版本),您需要一个文件document.ads
(与您要放置主程序和其他文件的工作目录相同)。
您的新包Document
需要“<code>with”另外两个包:Ada.Containers.Vectors
和Ada.Strings.Unbounded
.
你不能放进use Document;
去document.ads
;它需要放入使用它的包Document
中with
。该use
子句控制您是否需要编写完全限定名称 - 例如,按照您的方式编写Document
,您会说
with Ada.Containers.Vectors;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
package Document is new Ada.Containers.Vectors (Positive, Unbounded_String);
但写起来会更传统
with Ada.Containers.Vectors;
with Ada.Strings.Unbounded;
package Document is new Ada.Containers.Vectors
(Positive,
Ada.Strings.Unbounded.Unbounded_String);
你的主程序和其他包现在可以说with Document;
(如果你愿意,也可以说use Document;
)。
除了西蒙的回答之外,您还可以将您在任何地方声明的两行放入声明部分。这可以在子程序中,例如您的主程序、库或其他任何地方。
主要程序示例:
with Ada.Containers.Vectors;
with Ada.Strings.Unbounded;
procedure My_Main is
package Document is new Ada.Containers.Vectors
(Positive,
Ada.Strings.Unbounded.Unbounded_String);
-- use it or declare other stuff...
begin
-- something...
end My_Main;
要在多个源文件中使用它,请将其放入您的一个包或像 Simon 所写的单独文件中。