Я пытаюсь окунуться в ООП в Аде. Для этого мне нужно понять, как назвать, скомпилировать и связать файлы пакетов с gnatmake.Ada компиляция путаницы
Этот сайт (http://www.infres.enst.fr/~pautet/Ada95/chap22.htm) имеет хорошие примеры, но я не понимаю, как скомпилировать различные биты программы.
Я смотрю e_c22_p2.ada и e_c22_p3.ada. Из них я создал файл под названием Conveyance1.ads и добавил в него содержимое e_c22_p2 и файл под названием Vehicle1.adb и добавил там содержимое e_c22_p3.ada. Я использовал gnatmake Vehicle1.adb, но есть ошибки компиляции.
e_c22_p2.ada содержит:
-- Chapter 22 - Program 2
package Conveyance1 is
-- This is a very simple transportation type.
type TRANSPORT is
record
Wheels : INTEGER;
Weight : FLOAT;
end record;
procedure Set_Values(Vehicle_In : in out TRANSPORT;
Wheels_In : INTEGER;
Weight_In : FLOAT);
function Get_Wheels(Vehicle_In : TRANSPORT) return INTEGER;
function Get_Weight(Vehicle_In : TRANSPORT) return FLOAT;
-- This CAR type extends the functionality of the TRANSPORT type.
type CAR is new TRANSPORT;
function Tire_Loading(Vehicle_In : CAR) return FLOAT;
end Conveyance1;
package body Conveyance1 is
-- Subprograms for the TRANSPORT record type.
procedure Set_Values(Vehicle_In : in out TRANSPORT;
Wheels_In : INTEGER;
Weight_In : FLOAT) is
begin
Vehicle_In.Wheels := Wheels_In;
Vehicle_In.Weight := Weight_In;
end Set_Values;
function Get_Wheels(Vehicle_In : TRANSPORT) return INTEGER is
begin
return Vehicle_In.Wheels;
end Get_Wheels;
function Get_Weight(Vehicle_In : TRANSPORT) return FLOAT is
begin
return Vehicle_In.Weight;
end Get_Weight;
-- Subprogram for the CAR record type.
function Tire_Loading(Vehicle_In : CAR) return FLOAT is
begin
return Vehicle_In.Weight/FLOAT(Vehicle_In.Wheels);
end Tire_Loading;
end Conveyance1;
-- Results of execution
--
-- (This package cannot be executed alone.)
См. [Этот ответ] (http://stackoverflow.com/a/14901832). TL; DR - используйте 'gnatchop' в исходных файлах (' e_c22_p2.ada' и т. Д.) Для создания исходных файлов, ожидаемых GNAT. –
Имеет ли смысл средство передвижения иметь -42 колеса? –
@JacobSparreAndersen да, это так - когда вы перевозите ICBM (или другой большой материал), который, скорее всего, будет содержать количество колес такого транспортного средства. – darkestkhan