标签: ada

适用于Linux的Ada编译器

我在Linux上进行Ada开发的贸易研究.你有任何好的编译器/操作系统建议吗?

到目前为止,我已经从运行在CentOS 5.4上的AdaCore获得GNAT,并且我在Rational Apex和Aonix ObjectAda中有许可请求.

这是移植工作.原始代码库是OSF1 4.0d上的Apex 3.0.

还有什么我应该考虑的吗?理想情况下,它将是一个受支持的环境.

linux compiler-construction ada

15
推荐指数
2
解决办法
5274
查看次数

与C ++中的Ada子类型等效

C ++是否提供类似于Ada的subtype类型来缩小类型?

例如:

type Weekday is (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
subtype Working_Day is Weekday range Monday .. Friday;
Run Code Online (Sandbox Code Playgroud)

c++ language-comparisons ada

15
推荐指数
2
解决办法
443
查看次数

Ada有没有好的单元测试框架?

我来自C++背景,但我目前在Ada工作.在C++世界中,我在编写每个类时对其进行单元测试......这似乎不是我们的代码库在工作中的时尚.

我想开始为我创建的Ada软件包实现单元测试,是否有任何好的框架可以做到这一点?

unit-testing ada

12
推荐指数
2
解决办法
3302
查看次数

为什么Ada没有垃圾收集器?

我知道GC在Ada开发的时代并不受欢迎,对于嵌入式编程的主要用例,它仍然不是一个好的选择.

但是考虑到Ada是一种通用编程语言,为什么不是部分和可选的(仅跟踪显式标记的内存对象)垃圾收集器在后来的语言版本和编译器实现中引入.

我根本想不到开发一个没有垃圾收集器的普通桌面应用程序了.

garbage-collection ada

12
推荐指数
4
解决办法
5690
查看次数

阿达关机钩

当Ada应用程序被关闭/终止时,我想要一些'清理'调用.

例如,如果我在java中,我会做这样的事情来达到在关机时调用的效果:

Runtime.getRuntime().addShutdownHook(new Thread(){
       public void run(){
            method();
       }
});
Run Code Online (Sandbox Code Playgroud)

在Ada中有类似的东西或其他方式来实现这一目标吗?

ada

12
推荐指数
2
解决办法
1052
查看次数

如何使用Put_Line方法输出整数?

我无法编译这个程序,因为它似乎不会在Put_Line方法中打印整数变量和字符串.我已经在线查看了源代码,当它们这样做时它可以工作,所以我哪里出错了.谢谢你的帮助.

with Ada.Text_IO;                       use Ada.Text_IO;
with Ada.Integer_Text_IO;           use Ada.Integer_Text_IO;

procedure MultiplicationTable is

    procedure Print_Multiplication_Table(Number :in Integer; Multiple :in Integer) is
        Result : Integer;   
    begin
        for Count in 1 ..Multiple
        loop
            Result := Number * Count;
            Put_Line(Number & " x " & Count & " = " & Result);
        end loop; 
    end Print_Multiplication_Table;
    Number  :   Integer;
    Multiple    :   Integer;

begin
    Put("Display the multiplication of number: ");
    Get(Number);
    Put("Display Multiplication until number: ");
    Get(Multiple);
    Print_Multiplication_Table(Number,Multiple);
end MultiplicationTable;`
Run Code Online (Sandbox Code Playgroud)

ada console-output

12
推荐指数
3
解决办法
3万
查看次数

Ada功能与程序

谁能解释一下Ada"程序"和"功能"之间的区别?

ada gnat

12
推荐指数
1
解决办法
7392
查看次数

从C++处理程序捕获时如何获取Ada异常消息?

使用GNAT Ada和Gnu C++,我将Ada代码与c ++包装器连接起来,我想在运行这个(愚蠢的)代码时正确捕获Ada异常:

with ada.text_io;

package body ada_throw is

   procedure ada_throw is
   begin
      ada.text_io.put_line ("hello");
      raise program_error;
   end ada_throw;       

end ada_throw;
Run Code Online (Sandbox Code Playgroud)

相关规范代码是:

package ada_throw is

   procedure ada_throw;
   pragma export (convention => C, entity => ada_throw, external_name => "ada_throw");

end ada_throw;
Run Code Online (Sandbox Code Playgroud)

在C++方面这样做:

#include <iostream>

extern "C"
{
  void ada_throw();
  void adainit();
}

int main()
{
  adainit();
  ada_throw();
  std::cout << "end of program" << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

hello

raised PROGRAM_ERROR : ada_throw.adb:8 explicit raise
Run Code Online (Sandbox Code Playgroud)

所以异常机制的工作,我没有得到我的C++程序的最后打印和返回代码为非零.

现在我想抓住异常.如果我使用catch(...) …

c++ g++ exception ada gnat

12
推荐指数
1
解决办法
318
查看次数

然后在C ++中有条件

Ada 除了布尔运算符and then,还具有if条件中使用的语句的出色功能。这允许在访问对象之前检查例如该对象是否不为null,如下所示:and

if Object /= null and then Object.Value > 5 then
   -- do something with the value
end if;
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用嵌套在C ++ w / o中表达类似的行为if

c++ if-statement ada

12
推荐指数
1
解决办法
260
查看次数

gcc,make:如何禁用警告失败?

我正在尝试使用AVR微控制器和avr-ada构建gcc,并且我遇到了一个障碍,因为我的常规编译器对AVR所需的版本过于挑剔.我收到以下警告,这反过来导致gcc或make报告错误:

gcc -c -g -O2 -gnatpg -gnata -nostdinc -I- -I. -Iada 
  -I../../gcc/ada ../../gcc/ada/exp_ch5.adb -o ada/exp_ch5.o
exp_ch5.adb:177:16: warning: function "Has_Address_Clause" is not referenced
make[2]: *** [ada/exp_ch5.o] Error 1
make[1]: *** [all-gcc] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

有没有办法指示gcc或使警告不失败?

c gcc makefile ada

11
推荐指数
4
解决办法
5万
查看次数