因此,我正在学习Ada中的应用程序定义类型,它似乎类似于C编程语言中的typedef。但是,如果我使用ty胡枝子f为C中的预定义类型创建了一个新名称,我仍然可以这样做:
typedef int my_int;
int a = 5;
my_int b = a; -- No problem
但如果我在Ada身上试试这个:
type my_int is new Integer;
a : Integer := 5;
b : my_int := a; -- Causes some error
所以我的问题是,我的理解是正确的,在C中,my_int只是int类型的别名或新名称,而不是新类型,而在Ada中
这里有一个警告,我和很多人在网上看到gcc在C++代码上运行时:
cc1plus: warning: command line option "-Wstrict-prototypes" is valid for Ada/C/ObjC but not for C++
警告文本非常清楚:' C++‘不在集合Ada/C/ObjC中,所以我一点也不怀疑gcc为什么在编译C++代码时给出这个警告。(尽管有C++代码,我们打开这个标志的原因是因为它主要是C代码,我们选择了一个严格(高级别)警告选项列表,但是我们添加了一些C++代码。
我的问题是:为什么这个警告对C++无效?
来自的
我是Ada代码的初学者。我使用AdaCore的全球定位系统。
我会根据用户的大小创建一个变量。我写这个:
-- My ada program --
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure main is
wanted : Integer := 10;
type custom is range 0..wanted;
...
但是第8行出了问题:
Builder results
C:\Users\**********\Desktop\ada
下面是以空指针作为参数的C函数:
int read(void *buf, size_t num);
int =>返回读取操作是否成功。
void *buf => c将无符号字节缓冲区指针作为函数参数。
size_t数值应填充的字节缓冲区的=>大小。
目前我有以下Ada实现:
with Ada.Text_IO;
with System;
with Interfaces.C;
use Ada.Text_IO;
use Interfaces.C;
procedure Main is
-- Imported C function
function Rea
嗨,我正在做一个计算向量分量的程序。由于二维向量在笛卡尔空间中有一个水平分量和一个垂直分量,所以我决定使用record结构。
程序首先计算基向量,如下所示。以水平、垂直分量和角度作为输入。角是指从默认的笛卡儿坐标系到另一个旋转的笛卡尔坐标系的逆时针正角。
在文件Projections.adb中,您将看到计算:
D.Horz := A * Cos (C);
其中A是原笛卡尔坐标系的水平分量,C是新笛卡尔坐标系与旧坐标系之间的旋转角。
在主程序Get_projections.adb中,调用过程是
Vector_basis_r (Component_Horz, Component_Vert, the
我有一个Ada程序:
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure test is
type MY_TYPE is new Integer range 1..20;
subtype MY_TYPE2 is MY_TYPE range 5..6;
c : MY_TYPE:=10;
f : MY_TYPE2 :=6;
begin
put(Integer(c'SIZE));
end test;
当我运行它的时候,我得到32。如果我替换掉
type MY_TYP
大家好,
我是一个阿达语的初学者,我有一小段code.Can,谁能告诉我这是什么意思?
type Myarr_Type is array (Character) of Character;
Myarr : Myarr_Type;
C1 : character := character'first;
C2 : character := character'last;
我的问题是:1)根据上面的代码,C1和C2包含什么?
如果这真的很愚蠢,请原谅我没有一个ada编译器来检查这个变量的内容
向Maddy致敬
问:为什么以及如何修复ADA的错误信息?塞克斯
12:04声明必须在预期的“开始”29:01声明之前
With Ada.Text_IO; Use Ada.Text_IO;
With Ada.Integer_Text_IO; Use Ada.Integer_Text_IO;
With Ada.Strings.Unbounded; Use Ada.Strings.Unbounded;
With Ada.Strings.Bounded;
procedure polynomial is
begin
function evaluate (x: Integer) return Integer
Adam.Numerics.Float_Random为0 - 1.0生成浮动值,但我希望在用户定义的范围之间生成一个浮动值。比如Min := 100.0和Max := 200.0。就像这样:
with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO;
with Ada.Numerics.Float_Random; use Ada.Numerics.Float_Random;
procedure test1 is
编辑:我简化了我的代码,以更好地显示情况。
任务:我有一个用C编写的工作套接字服务器/客户端程序,我想通过使用Ada接口来改进它。
C函数,当用户输入数学操作为2+5、5*9、10/2或10-9时,该函数将获取用户输入。
int read_message(void *buffer, int size, int timeout)
{
//Recevie
int n = recv(newfd, buffer, size, 0);
if(n == -1)
{
perror("Can not read message");
说,在Ada中这是一件有效的事情:
Large : array (0 .. 100) of Integer;
Small : array (0 .. 3) of Integer;
-- extract section from one array into another.
Small(0 .. 3) := Large(10 .. 13);
,这不管用。
为了简单起见,我正在使用ideone的在线Ada环境来玩这个东西(上面的链接)。本教程是错误的,还是指的是ideone没有实现的Ada版本?
我的目标是在括号内打印具有N个节点的所有形式的树,这些树可以用上下文无关语法定义如下:
T→树为空
T→(T.T)一个具有左右子节点的节点
例如,具有3个节点的所有树看起来都如下所示:
(.))
((.(.))
((.))
()
(.(.()
我用Ada写了以下代码,
with Ada.Containers; use Ada.Containers;
with Ada.Containers.Vectors;
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Command_Line;
procedure Ass1 is
X: Positive
我正在尝试创建一个6位精度的新浮点数类型。但我似乎无法使用它。下面是包MyFloat_IO.ads的代码
WITH Ada.Text_IO;
PACKAGE MyFloat_IO IS
TYPE MyFloat IS DIGITS 6 RANGE 0.0..Float'Last;
PACKAGE MyFloat_IO IS NEW Ada.Text_IO.Float_IO(MyFloat);
end MyFloat_IO;
主要代码是:
WITH Ada.Text_IO;
WITH MyFloat_IO;
USE MyFloat_IO;
WITH Ada.Numerics;
在另一个过程中调用的过程的输出不一致,我遇到了问题。下面是一个相对简单的哈希程序的精简版本.
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Unchecked_Conversion;
with Ada.Strings; use Ada.Strings;
procedure lab5_C_Part_A is
package LongIntIO is new Ada.Text_IO.Integer_IO(Long_Integer);
use LongIntIO;
package IntIO is new Ada.Text_IO.Integer_IO(
我不断得到下面所述的错误。我已经将违规记录移入和移出包的私有部分,但错误仍然存在。我是Ada的新手,我在实现这个通用堆栈来保存记录数组时遇到了问题。 我已经将记录和类型声明移入和移出了private部分。我还尝试在私有部分之前添加"type garagebay is private“声明,如代码所示。 -- .ads file --
generic
low: integer; --lowerbound of stack
up: integer; -- upperbound of stack
type item is private; -- type of stack
p
例如,在Ada中类似这样的东西(如果它支持这一点):
type Type_Name is range bottom .. top;
其中"bottom“和"top”是变量。
或者像这样的C语言(如果它支持这一点):
struct s {
int a;
if (z<3) {
char b;
int c;
} else {
struct ss {
int b;
char c;
}
}
} v;
或者,如果c在声明中的变量标识符后面有类
以下程序(main.adb)将无法编译,并出现错误: main.adb:10:15: expected private type "ThreadName" defined at config.ads:5
main.adb:10:15: found private type "Ada.Strings.Unbounded.Unbounded_String"
main.adb:11:45: expected private type "Ada.Strings.Unbounded.Unbounded_String"
main.adb:11:45: fo
我的代码应该打印出范围最大的学生。在我的学生课上,有一个计算范围的方法,而在我的课堂上,有另一个方法可以确定哪个学生的增长最快。我的问题出现在学生类中,我在addExamScore方法中得到了一个越界异常。 主类: public class ClassroomTester
{
public static void main (String[] args)
{
Classroom c = new Classroom(2);
Student ada = new Student("Ada", "Lovela
我要带艾达上大学。今天我的教授向我们提出了一个问题。在下面的代码中有三种类型的声明。第三个没有编译错误“缺少新的”。
我假设'Type‘关键字让编译器知道我们将要定义一个存储类,所以我的问题是:
声明之间的语义差异是什么?
如果省略关键字Integer,则Ada是否在指定范围时采用通用整数类型?这似乎是一个显而易见且合乎逻辑的结果。此外,当关键字'Integer‘之前’范围‘是新的,那么需要?
我希望这不是模棱两可,我做了一些研究,但似乎找不到一个确切的答案,或者也许我是一个新手与Ada,以了解我发现了什么。我真的很想了解下面发生的事情。
with Ada.Text_IO; u
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure factorial_ada is
n, i : Integer;
output : Integer := 1;
begin
Put_Line("Enter the number to be taken factorial of: ");
Get(n);
-- Begin Loop
for i in 2..n
loop
outpu
我最近偶然发现了类似于此的代码,它是在Ada 95模式下编译的,而不是在Ada 2005模式下编译的:
with Ada.Text_IO;
procedure Test is
Printable_Char : constant Character := '["20"]';
Non_printable_Char : constant Character := '["00"]';
begin
Ada.Text_IO.Put_Line (Printable_Char & Non_printabl
如何通过post条件在子程序调用过程中指定限制的out参数?考虑以下代码:
with Ada.Text_IO;
procedure Main is
package C is
type Printer is tagged limited private;
procedure Print
(P : in out Printer;
B : Integer);
private
type Printer is tagged limited record
A : Integer := 0;
我有一个修改过的教科书示例,如下所示(这本书是Understanding Ada- Bray和Pokrass的软件工程方法):
PACKAGE SOLAR_SYSTEM IS
TYPE PLANET IS (MERCURY, VENUS, MARS, JUPITER, SATURN, NEPTUNE);
SUBTYPE TERRESTRIAL_PLANET IS PLANET RANGE MERCURY..MARS;
SUBTYPE JOVIAN_PLANET IS PLANET RANGE JUPITER..NEPTUNE;
TYPE MILES IS DIGITS 5 RAN
我尝试用Ada2012编译器编译Ada95程序。但是,通用包Garbage_Collector的实例化存在问题。包实例化中不接受子类型A_Term: prolog.adb:27:15: designated type of actual does not match that of formal "Link"
prolog.adb:27:15: instantiation abandoned 我曾尝试将A_Term更改为type A_Term is access A_Node;。然后,程序包将实例化,但其余代码会中断。从Ada 95开始有什么改变了吗?我如何让它在Ada 20
所以,免责声明,我只使用Ada几个星期了.我希望会有一个导致这一切的错误。
所以我的(匿名)密码..。
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Containers.Synchronized_Queue_Interfaces;
with Ada.Containers.Bounded_Synchronized_Queues;
procedure Hello is
type ID_Type is ( Invalid_Id,
Config_Id);
for ID_Type use ( Invalid