问题标签 [gnat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
470 浏览

json - 在 OS/X 上用 gnat 编译 ada 库 gnatcoll-json.adb

我有来自 的来源Adacore,所以它应该可以工作 - 我也在 Adacore 上留下了一个“问题”,但可能需要一些时间才能在那里得到解决。我怀疑我可能做错了什么,有什么建议吗?

这是问题所在:

我可以看到文件中那些丢失的正文gnatcoll.ads似乎是第一个问题。确实,例如Prepend的主体不在该文件中 - 但我认为主体应该在gnatcoll.adb文件中,而不是gnatcoll.ads文件中。

0 投票
1 回答
178 浏览

ada - 在 Ada (GNAT) 中,使用 pragma Overflow_Mod / 无限精度中间计算

我正在尝试将(小)分子和分母转换为大常数分母的分子,选择为可被大多数小数整除并且略低于 2**63。由于这可能会溢出,我将使用 pragma Overflow_Mode(已消除)(参见 GNAT 4.8 手册http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gnat_ugn_unw/Specifying-the-Desired-Mode。 html#Specifying-the-Desired-Mode)。

不幸的是,当尝试使用“~/bin/gcc-4.8.0/bin/gnatmake -gnat12 -gnata -Wall example.adb”(和 -gnato3,尽管这对于编译指示来说应该是多余的),但编译器说:

哼哼。我不明白 Overflow_Mode 是做什么的吗?有没有一些简单的方法可以重新排列它以使其有效?(我可以去计划 A,一个更正常的分数类,可能更快也可能不会更快,或者计划 B,只使用浮点数并接受 1/3 将被四舍五入,但我希望这个工作。适当的无限长度整数支持在这里是多余的。)

0 投票
4 回答
1292 浏览

sockets - 如何使用 gnat.sockets.Receive_Socket 检测套接字读取超时?

我正在使用Gnat Sockets包。我有一个服务器端套接字,它已使用以下内容创建和初始化:

...

...

到目前为止一切都很好,但是什么时候可以使用:

我不知道如何检测我的套接字是否超时,或者在它返回时读取一些数据。我是否需要使用该Check_Selector方法(这种用法似乎有点重,如果是这样,这是否与调用中设置的超时交互Set_Socket_Option)?

谢谢,

0 投票
3 回答
481 浏览

ada - Ada 2012 多路树,创建根节点

我正在使用多路树的有界版本。我可以创建我的元素类型并实例化我的类型的树,但是如何创建根?我看到了几种形式的 Insert_Child。我使用 Insert_Child 的所有尝试都失败了,因为我使用 No_Element 作为 Parent 或 Before 参数。

有没有人有使用多路树包的例子,他们可以指出我?

如果重要的话,我正在使用免费的 Gnat 版本的 Ada。

0 投票
1 回答
1009 浏览

debugging - GNAT GPS 调试器 - 无法初始化调试器

我正在尝试在 GNAT 的 GPS IDE 中调试我的项目。每次我选择Debug->Initialize->“program name”时,GPS的gui切换到debug GUI,然后弹出一个错误“could not initialize the debugger”。

我发现的两个可能的解决方案是 gdb.exe 可能已过时,它建议在 GPS 之外运行它,它运行良好。另一个可能的解决方案是确保在构建项目时应用 -g 标签,因为这些标签对于 gnatlink 和 gcc 进行调试是必需的。它还声明 -g 标记默认应用于新项目,除非您专门删除了它。我怀疑我有,但我不确定我会在哪里检查以确保它仍然包含在内。

另一件奇怪的事情是,当我初始化调试时,GPS 附带的教程运行了如何构建和调试代码,效果非常好。我所指的那个教程可以通过 Help->GPS->GNAT Programming Studio Tutorial 访问。它引用了 GNAT/2012/share/examples/gps/tutorial 目录中的程序“sdc”。

关于我做错了什么的任何想法,因为错误不是很有帮助?

谢谢!

0 投票
1 回答
478 浏览

autocomplete - GNAT GPS 中 GtkAda 的自动补全

我刚刚开始使用 GNAT GPS(Gnat Programming Studio)进行 Ada 和 GtkAda 开发,有些事情让我感到沮丧:自动完成(即:智能感知,或任何你想称呼它的东西)只适用于我的代码,但是不适用于 GtkAda 库。这让事情变得非常缓慢和无聊,因为我每次都必须检查 GtkAda 文档上的每个 API 调用。

所以我的问题很简单:有没有办法在 GPS 上启用 GtkAda 的自动完成功能?

0 投票
1 回答
522 浏览

ada - 先决条件不适用于 GNAT?

我对 Ada 还是有点陌生​​,我想我误解了先决条件的使用,因为通过 GNAT RM 看起来检查似乎不是在运行时执行的。此外,这里的前提条件的 GNAT RM没有指定如果不满足前提条件则抛出哪个异常。

这是我正在尝试的代码:

如果我理解正确,那么这个程序应该在调用 Put_Line 过程之前引发一些未指定的异常。但是您可以看到,当我运行该程序时,调用该过程时使用了一个无效的 Size 参数,该参数违反了 Precondition Destination'Size ≥ Size ≤ Source'Size。相反,我必须放置一条if语句来实际捕获错误并引发异常 Constraint_Error 以保持正常。

我尝试过像添加这样的变体,pragma Precondition ( ... )但这也不起作用。

一件奇怪的事情是,如果我在通用过程主体/定义中重复该with Pre =>子句,程序实际上会编译。它通常不允许过程这样做并引发错误(即,前提条件应该只在正式声明中,而不是在定义中)。在这种情况下,通用过程是一个例外吗?

我也很惊讶 use 子句可以添加到泛型过程声明中。这使得定义形式参数名称更容易(那些非常长的名称),但看起来更像是一个错误,因为这不能用于正常/常规过程声明。

PS 我想用 Ada 语言实现我最接近 C 中的 memcpy() 的模仿,以用于学习目的。

0 投票
3 回答
480 浏览

enums - 具有重复值的 Ada 枚举

我正在尝试将设备注册为枚举。从寄存器读取有 2 个值 -> 0 表示完成,1 表示待处理。同样,写入寄存器有 2 个值 -> 0 没有动作,1 进行复位。所以,我写了下面的代码

但这会引发错误

枚举是否有可能具有重复值?

0 投票
1 回答
2904 浏览

windows - Adacore GPS“无法在路径上找到可执行文件:gnatmake”

我最近在我的 Windows 7 机器上安装了适用于 Lego Mindstorms 的 Adacore GPS 2012。当我尝试构建示例项目时,我收到错误消息:

“无法在路径上找到可执行文件:gnatmake”

我曾尝试寻找其他有此问题的人,但这些案例中的大多数都在 Linux 上。如果有人可以帮助我找出问题所在,或者指出我正确的方向,将不胜感激。

0 投票
0 回答
219 浏览

dependencies - 使用 SCons 构建 Ada 时处理单个 .ads 文件

如何调整scons-gnatand scons-adabuilder 以处理没有相应 .adb 文件的广告文件?我问是因为gnatbind当不存在对应的 .adb 时,要求提供与 .ads 文件对应的 ali 文件。

我需要这个,因为在我们的组织中,一些模块以二进制格式(.ads并且.ali.o)交付。我还听说过将 .ali 文件设为只读以使 gnat 套件更快乐。

如果您对此提供帮助,我最终可以说服我的 IT 组织的领导者从 Make 转向 Scons。由于 SCons 的所有酷特性,包括共享缓存、显式环境处理等,这将极大地提高编译速度和迭代开发乐趣。