如何使用“单独”关键字

2024-01-12

我无法找出关键字separateAda 及其深度概念。请举个小例子帮助我理解?

假设我有一个嵌套过程

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 关键字来实现两种效果之一。

  1. 操作系统特定操作。 (将2个版本的过程/函数放在不同的目录中,并针对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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用“单独”关键字 的相关文章

  • Ada 中的派生类型和子类型

    有什么区别 首先 术语 它是 Ada 不是 ADA 它是以 Ada Lovelace 命名的 它不是一个缩写词 子类型与其基类型兼容 因此您可以将基类型的操作数与基类型的操作数混合 例如 subtype Week Days is Integ
  • 谁能告诉我 pragma 语句的用法

    谁能告诉我 C 和 Ada 中 pragma 的使用 如果可能的话请提供一些例子 C99 中有 3 个标准编译指示 pragma STDC FP CONTRACT on off switch pragma STDC FENV ACCESS
  • 在 Ada 中创建子类型而不指定范围有什么意义?

    在Ada中 我经常看到这样的东西 type Number is new Integer 这有什么意义呢 难道你就不能快乐吗 Integer 我还看到过这样的代码 type Small Number is range 1 5 这对我来说是有道
  • Ada 95:修改字典程序的输出

    我找到了这本词典作者 William Whitaker 在互联网上 我喜欢它的解析能力 但输出不适合我 问题 对我来说是挑战 给定输入形式 例如 audiam 程序将返回以下输出 纯文本 audi am V 4 1 PRES ACTIVE
  • Ada 中有“this”关键字吗?

    具体来说 任务有没有办法获得对其自身的引用 例如 task type someTask type someTaskAccessor is access someTask task body someTask is pointerToTask
  • 是否可以声明具有无限上限的 Ada 范围?

    我想在 Ada 中声明记录类型的速度范围 下面的方法行不通 但是有没有办法让它工作呢 Speed in knots range 0 to unlimited Speed float Range 0 0 unlimited 我只想要这个数字的
  • 如何检查一个元素是否属于一种子类型或另一种子类型?

    刚刚了解了 Ada 中的枚举和类型 决定写一个小程序来练习 with Ada Text IO use Ada Text IO with Ada Integer Text IO use Ada Integer Text IO procedur
  • 为什么字符串需要用初始值初始化?

    我有一根绳子lx String我想稍后在代码中设置该值 但出现错误unconstrained subtype not allowed need initialization provide initial value or explicit
  • 如何阻止控制台窗口立即关闭 | GNAT-GPS

    我有 Ada 程序 可以使用 GNAT GPS 完美运行和编译 当我运行其 exe 文件并提供用户输入时 该 exe 会立即关闭 而不是说 按任意键继续 我在网上搜索了很多 但我只找到了与使用 system pause 的 c c visu
  • Ada 中的字符串数组

    我在 Ada95 中有一个程序 我必须在其中创建一个字符串数组 该数组可以包含可变长度的字符串 例子 我已经声明了一个数组 其中所有索引都可以存储大小为 50 的字符串 当我为上面的数组分配一个较小的字符串时 我收到 约束错误 Code p
  • Ada 通用平均函数

    我有一个函数可以对记录数组中的某个数值进行平均 该值可以是自然类型增量 也可以是枚举类型增量 我让它正确地总结了这些值 但我的问题是 如何将数组的长度转换为通用类型 以便它可以除以整数和增量类型数字 在记录数组上使用 长度 属性 这样做的优
  • 从 Ada 访问 c 常量

    我有一个带有这样类型定义的头文件 ifndef SETSIZE define SETSIZE 32 endif typedef struct set unsigned array SETSIZE set t 要使用相应的 C 函数 我需要在
  • 单元测试期间 Ada 中的异常处理

    我正在尝试为我最近编写的一些 Ada 代码编写一些单元测试 我有一个特殊的情况 我希望得到一个异常 如果代码工作正常 我不会 但在这种情况下我所做的只是测试 而不是编写代码 如果我在测试例程中处理异常 那么我不知道如何继续在该过程中进行测试
  • 确定 Ravenscar 程序中堆栈使用情况的最佳实践

    我正在使用 Ravenscar 子集编写一个 Ada 程序 因此 我知道执行时正在运行的任务数量 该代码是由 gcc 编译的 fstack check https gcc gnu org onlinedocs gnat ugn Stack
  • 使用 SPARK 证明选择排序算法

    我试图证明我在 Ada 中的选择排序实现是正确的 我尝试了一些循环不变量 但使用 gnatprove 只能证明内部循环的不变量 package body Selection with SPARK Mode is procedure Sort
  • 创建不兼容的数字子类型

    在 Ada 中 可以创建不兼容的等效数字类型 type Integer 1 is range 1 10 type Integer 2 is range 1 10 A Integer 1 8 B Integer 2 A illegal 这可以
  • Ada:如何解决“循环单元依赖”?

    假设我有两条记录 Person and Animal 每条记录都在一个单独的包中 包人 with animals use animals package persons is type person is record animalref
  • 在 Ada 中定义通用标量类型包

    我想通过制作一个用于操作多项式的 Ada 包来测试编写 Ada 包的水 可以为多种代数结构定义多项式 因此为了反映这一点 我想使该包通用 以便它可以与浮点数 整数或其他数字子类型一起使用 我现在想说 我对 Ada 的类型系统如何工作或者它的
  • 对于匿名访问类型重载运算符“=”?

    我正在读巴恩斯那本出色的 艾达 一书 这是第 11 7 节中用于深度比较链表的代码示例 type Cell is record Next access Cell Value Integer end record function L R a
  • Ada 中的 In/Out 与 Out

    我有一个简短的艾达问题 如果我有一个程序may写出一个变量 或者我might不用管它 它应该是一个Out参数或In Out范围 我想这可以归结为一个问题 如果调用者调用参数如下的过程 它会看到什么Out但该过程不触及参数 它看到相同的值吗

随机推荐