如何使用“separate”关键字
How do I use “separate" keyword
我无法理解 Ada 中的关键字 separate
及其深度概念。请举个小例子帮助我理解?
假设我有一个嵌套过程
with ada.text_io; use ada.text_io;
procedure main is
procedure proc is
begin
put_line ("i am proc");
end proc;
begin
put_line ("main");
end main;
如何使用单独的关键字?
separate 关键字创建一个编译单元,一个独立编译的子单元。 separate的参数指的是subunit是
的子单元所在的包
因此,如果您有一个包主体 X,那么您从中删除过程 Y,您通过创建一个新文件来创建 X 的子单元,在其中放置 Y,并将 "separate(X)" 放在开头文件的一部分,以表明 Y 确实是 X 的一部分。
您主要使用 separate 关键字来实现两种效果之一。
- OS具体操作。 (将2个版本的程序/函数放在不同的目录,并针对2个不同的目标进行编译)
- 将冗长的过程与周围的代码分开。
这是一个语法示例。
package_x.ads
package Package_X is
procedure Foo;
procedure Sep;
end Package_X;
package_x.adb
package body Package_X is
procedure Foo is
begin
null;
end Foo;
procedure Sep is separate;
end Package_X;
package_x-sep.adb
separate (Package_X) procedure Sep is
begin
null;
end Sep;
我无法理解 Ada 中的关键字 separate
及其深度概念。请举个小例子帮助我理解?
假设我有一个嵌套过程
with ada.text_io; use ada.text_io;
procedure main is
procedure proc is
begin
put_line ("i am proc");
end proc;
begin
put_line ("main");
end main;
如何使用单独的关键字?
separate 关键字创建一个编译单元,一个独立编译的子单元。 separate的参数指的是subunit是
的子单元所在的包因此,如果您有一个包主体 X,那么您从中删除过程 Y,您通过创建一个新文件来创建 X 的子单元,在其中放置 Y,并将 "separate(X)" 放在开头文件的一部分,以表明 Y 确实是 X 的一部分。
您主要使用 separate 关键字来实现两种效果之一。
- OS具体操作。 (将2个版本的程序/函数放在不同的目录,并针对2个不同的目标进行编译)
- 将冗长的过程与周围的代码分开。
这是一个语法示例。
package_x.ads
package Package_X is
procedure Foo;
procedure Sep;
end Package_X;
package_x.adb
package body Package_X is
procedure Foo is
begin
null;
end Foo;
procedure Sep is separate;
end Package_X;
package_x-sep.adb
separate (Package_X) procedure Sep is
begin
null;
end Sep;