Ada C/C++;
我来自嵌入式系统上的C/C++,在函数中我们一直使用一个静态变量,以便在整个调用中保留该值 在Ada中,这似乎只能通过等效的文件级静态变量来实现。是否有Ada等效物 C++:Ada C/C++;,ada,Ada,我来自嵌入式系统上的C/C++,在函数中我们一直使用一个静态变量,以便在整个调用中保留该值 在Ada中,这似乎只能通过等效的文件级静态变量来实现。是否有Ada等效物 C++: Ada:?包级别变量 注意,包不一定是文件级的;如果愿意,您甚至可以创建和使用子程序的本地包。包的一个用途是创建一个对象和作用于它的所有方法(单例模式);将对象的所有详细信息保持为私有 如果我对C++的理解不是太生疏,那么一个相近的等价物是: package HW_Counter is function Get_Ne
Ada:?包级别变量 注意,包不一定是文件级的;如果愿意,您甚至可以创建和使用子程序的本地包。包的一个用途是创建一个对象和作用于它的所有方法(单例模式);将对象的所有详细信息保持为私有 <>如果我对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。但是,要获得同样的效果并不难,如果有点令人厌烦的话。在Ada 2012中,你甚至不需要一个包体,你可以在私有部分使用一个表达式函数来实现访问器。Shark8,我不这么认为?你怎么得到增量?他说静态。。。该死的,它是静电的开个玩笑你完全正确,忘了。。。但是访问可以在规范中完成。
C := HW_Counter.get_next;