Ada等效于C/C++中的局部静态变量

标签 ada

我来自嵌入式系统上的C/C++,而且始终在函数内部使用静态变量,以便在整个调用过程中保留该值。

在Ada中,似乎只用等效于文件级静态变量的方式完成此操作。有相当于Ada的内容吗?

C++:

function Get_HW_Counter() {
   static int count = 0;
   return ++count;
}

艾达:??

最佳答案

程序包级别的变量。

请注意,程序包不一定是文件级别的。您甚至可以根据需要创建和使用子程序本地的包。包的一种用法是创建一个对象以及作用于该对象的所有方法(单一模式)。将对象的所有详细信息保密。

如果我对C++的理解不是太生锈,那么近似的等效项将是:

package HW_Counter is
   function Get_Next;
private
   count : natural := 0; -- one way of initialising
   -- or integer, allowing -ve counts for compatibility with C++
end HW_Counter;

这就是包裹客户需要看到的全部内容。
package body HW_Counter is

   function Get_Next return natural is
   begin
      count := count + 1;
      return count;
   end Get_Next;

begin  -- alternative package initialisation part
   count := 0;
end HW_Counter;

用法通常是
   C := HW_Counter.get_next;

关于Ada等效于C/C++中的局部静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384161/

相关文章:

c - 这个 C 结构体如何翻译成 Ada

arrays - 谁能告诉我 ada 中 Real_Matrix 的精度

c - C中的空结构

字符串输出奇怪

ada - GNAT GPS : Add a custom command

ada - 尝试在 Ada 中的文件末尾添加文本

string - 如何从 Ada 中的其他字符串构建字符串?

julia - Julia中的系统信号拦截

Ada sin(x) 使用泰勒级数计算

ada - SPARK 中的程序验证 - 计算数组中的元素