Если бы вы собирали
package Guillaume is
end Guillaume;
package body Guillaume is
end Guillaume;
в режиме Ады 1983 вы получите, например.
gnatmake -gnat83 guillaume.ads
gcc -c -gnat83 guillaume.ads
guillaume.ada:1:09: warning: package "Guillaume" does not require a body
guillaume.ada:1:09: warning: body in file "guillaume.adb" will be ignored
Наличие тела, не требуемого спецификацией, было объявлено незаконным с Адой 95 (была бы возможность изменить тело и процесс компиляции не заметил бы, что его нужно перекомпилировать, что привело бы к путанице). Если ваш генератор кода был разработан для создания Ады 83, то, я думаю, вам, возможно, придется столкнуться с компиляцией в режиме Ады 83, но GNAT, насколько мне известно, не гарантирует 100% совместимость, особенно в отношении выполнения. система времени касается.
Действительно ли тела оскорбительных пакетов пусты? Если это так, вы можете перечислить их и использовать атрибут Excluded_Source_List_File
в своем проекте. Если нет, у вас проблемы, потому что нет способа (без изменения исходников пакетов) заставить код в них выполняться.
(Позже): на самом деле Excluded_Source_List_File
не помогает; он останавливает просмотр gprbuild в файле, но не в компиляторе; и именно компилятор отвергает тело. Извиняюсь. Но если бы вы могли составить такой список, вы могли бы использовать его для удаления плохих тел.
person
Simon Wright
schedule
01.09.2017