gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:52:32 24 4
gpt4 key购买 nike

我来自嵌入式系统上的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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com