标签: ada

从 Ada 捕获 C 代码中的内存异常

我有一些与某些 C 函数接口的 ada 代码,但我无法在由 C 代码生成/引发的 ada 代码中捕获内存异常/SIGSEGV 信号。我正在使用运行 C 函数的 ada 任务,但我知道 C 代码中存在问题的唯一方法是,当我尝试安排更多任务时,ada 代码会引发TASKING_ERROR. 这没关系,但无法确切地找出问题的来源,因为问题的唯一迹象是TASKING_ERROR我的 ada 任务调度程序中的“一路向上”。我可能会采用什么策略来查明任务错误的实际原因?

任何帮助或想法将不胜感激。

c ada

0
推荐指数
1
解决办法
683
查看次数

在 ADA 中实例化任务

我需要在 Ada 中创建一个参数化任务,我得到的错误是:判别式必须具有离散或访问类型。

这是我的代码:

task type FEP_Con(Port_Num :  Port_Name) is
  entry Start;
end FEP_Con;

type FEP_Con_acc is access FEP_Con;

task body FEP_Con is
  S_Port : Serial_Port;
  Buffer : Ada.Streams.Stream_Element_Array(1..1024);
  Last   : Ada.Streams.Stream_Element_Offset;
  Response_Str : Unbounded_String;
  --cPort : Port_Name := "";
begin
  accept Start;
Run Code Online (Sandbox Code Playgroud)

提前致谢。

ada parameterized task

0
推荐指数
1
解决办法
900
查看次数

如何判断Gtk.Widget是否是Gtk.Container?

我正在使用GTKAda来处理一个返回"access Gtk.Widget.Gtk_Widget_Record'Class"的回调.我如何知道这个Widget是否是Gtk.Container?

预先感谢您的帮助.

gtk ada

0
推荐指数
1
解决办法
72
查看次数

Ada中的File_Type用于位图

我在Internet上找到的代码有问题,我想制作一个位图,程序说:

程序放PPM(File:File_Type; Picture:Image)是

但是当我在main中调用该过程时,我不知道我应该在第一个参数中添加什么,一个带有名称的字符串,扩展名还是什么?

我希望你能帮帮我 :)

file-type ada ppm

0
推荐指数
1
解决办法
178
查看次数

如何比较ada 95中的字符串

我刚刚开始学习Ada 95,我在比较字符串方面遇到了一些问题.

这是代码:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; 
with Ada.Command_Line;
with Ada.Strings.Unbounded;

procedure Test1 is

   vad : String(1..9);
   Amount : Integer;
   Main : Integer;
   Second : Integer;
   Third : Integer;

begin
   Main := 1;
   Second := 0;
   Third := 0;

   Put("What do you want to do?");
   New_Line(1);
   Get(vad);
   New_Line(1);

   if Vad  = "fibonacci" then
      Put("How long do you want the sequence to be");
      New_Line(1);

      Get(Amount);
      New_Line(1);

      Amount := Amount -1;

      for I in 1 .. Amount loop …
Run Code Online (Sandbox Code Playgroud)

string if-statement compare ada

0
推荐指数
1
解决办法
1012
查看次数

Ada通用类型图像属性

我目前正在大学的实时编程语言课程中学习Ada,并对泛型有疑问.

我有一个通用的程序 csv_put

package PSU_Logging is

   type logged_signal_names_t is (
      t,
      U_V1,
      I_L1,
      U_C1,
      I_L2,
      U_C2,
      I_Load
   );

private
   ... Some types, tasks and subprogramms ...

   generic
      type Item_Type_t is private;
      procedure csv_put (File : in File_Type; Item : in Item_Type_t);

end PSU_Logging;
Run Code Online (Sandbox Code Playgroud)

与定义

package body PSU_Logging is

   procedure csv_put (File : in File_Type; Item : in Item_Type_t) is
   begin
      Put (File, Item_Type_t'Image (Item));
      Put (File, ", ");
   end csv_put;

   procedure csv_put_float is new csv_put (Item_Type_t => Float);
   procedure csv_put_duration …
Run Code Online (Sandbox Code Playgroud)

generics ada

0
推荐指数
1
解决办法
411
查看次数

Ada I/O:Put_Line在Get_Line之后无法正常工作

我正在尝试在Ada中进行基本的I/O,但是关于这个的文档不是很有用(除非我去错了地方).在下面的块中,我试图测试字符串追加和输出,但由于某种原因,它实际上只输出"Hello WORLD!" 我确定我错过了一些非常简单的东西,但我已经尝试了几个小时来弄明白这一点.

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Strings.Fixed; use Ada.Strings.Fixed;


procedure Main is

     usrIn : String(1..80);
     appendString : Unbounded_String;
     last : Natural;

begin
     Put_Line ("Hello WORLD!");
     Get_Line(usrIn, last);
     Put_Line ("AAAAAAAA");
     appendString := To_Unbounded_String("USER IN: ");
     Append(appendString,usrIn);
     Put_Line("Output follows");
     Put_Line(To_String(appendString));

end Main;
Run Code Online (Sandbox Code Playgroud)

ada console-application

0
推荐指数
1
解决办法
285
查看次数

Gnat(ada95)使用我的软件包时出现错误“ ...不可见”错误

使用Gnat 7.4.0。

我是Ada菜鸟,对错误消息感到困惑:

$ gnat make list_test.adb
x86_64-linux-gnu-gcc-7 -c list_test.adb
list_test.adb:9:18: "List" is not visible (more references follow)
list_test.adb:9:18: non-visible declaration at linked_list.ads:19
x86_64-linux-gnu-gnatmake-7: "list_test.adb" compilation error
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我List的人不可见。

我正在尝试编写一个带有通用负载的链表,以自学Ada。我写了一个具有类似布局(通用除外)的二叉树,但没有出现此错误。

.ads

with Ada.Unchecked_Deallocation;

generic
    type Payload_Type is private;

package Linked_List is

    type List_Node;
    type List_Node_Pointer is access all List_Node;

    type List_Node is
    record
        payload : Payload_Type;
        next    : List_Node_Pointer := null;
        prev    : List_Node_Pointer := null;
    end record;

    type List is
    record
        head  : List_Node_Pointer := null; …
Run Code Online (Sandbox Code Playgroud)

ada

0
推荐指数
1
解决办法
76
查看次数

Ada-Discrete_Random示例

John Barnes撰写的“ Ada 2012中的编程”的第53页共享了我无法使用的不完整代码片段。

我想出了一个完整的程序来扩展本书中的代码...

with Ada.Numerics; use Ada.Numerics;
with Ada.Text_IO; use Ada.Text_IO;

procedure Main is
  type Coin is (Heads, Tails);
  package Random_Coin is new Discrete_Random(Coin);
  use Random_Coin;

  G : Generator;
  C : Coin;
begin

  for i in 1 .. 20 loop
    C := Random(G);
    Put (C'Image);
  end loop;  

end Main;
Run Code Online (Sandbox Code Playgroud)

我正在使用的“ GPS” IDE抱怨以下错误:

  • 第6行:“ Discrete_Random”未定义
  • 第7行:“ Random_Coin”未定义
  • 第9行:“ Generator”未定义
  • 第14行:“随机”未定义

IDE确实给了我“ intellisense”(使用Visual Studio中的术语),它指示Discrete_Random实际上是可见的,并且在添加了“ with”和“ use”语句的情况下可用。

有人可以引导我解决我犯下的愚蠢错误吗?

ada

0
推荐指数
1
解决办法
68
查看次数

Ada 2012 RM-评论和字符串文字

我正在浏览Ada 2012 RM,并希望了解我的理解中是否有漏洞或RM中的漏洞。假如说

    put_line ("-- this is a not a comment");
Run Code Online (Sandbox Code Playgroud)

是合法代码,我该如何从RM推论其合法性,因为第2.7节指出“注释以两个相邻的连字符开头,一直延伸到行尾。”而第2.6节指出“ string_literal由一个括在用作字符串括号的两个引号之间的图形字符序列(可能没有)。” 似乎在两个部分之间存在紧张关系,而2.7会获胜,但事实并非如此。

ada reference-manual

0
推荐指数
1
解决办法
95
查看次数