我来自嵌入式系统上的 C/C++,并且一直在我们使用静态变量的函数内部,以便在整个调用过程中保留该值。
在 Ada 中,这似乎只使用等效的文件级静态变量来完成。是否有 Ada 等价物。
C++:
function Get_HW_Counter() {
static int count = 0;
return ++count;
}
阿达:???
我来自嵌入式系统上的 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;