Документация pragma Source_File_Name
говорит синтаксис
pragma Source_File_Name (
[Unit_Name =>] unit_NAME,
Spec_File_Name => STRING_LITERAL,
[Index => INTEGER_LITERAL]);
pragma Source_File_Name (
[Unit_Name =>] unit_NAME,
Body_File_Name => STRING_LITERAL,
[Index => INTEGER_LITERAL]);
так что причина компилятор жалуется, что вы использовали неправильный синтаксис , Используя правильный синтаксис, который был бы
package Parent_With_Very_Long_Name.Child is
pragma Source_File_Name
(Parent_With_Very_Long_Name.Child, Spec_File_Name => "parent-child.ads");
end Parent_With_Very_Long_Name.Child;
но компилятор теперь говорит
parent-child.ads:2:01: incorrect placement for configuration pragma "Source_File_Name"
Правильное размещение для данной конфигурации прагмы перед блоком:
pragma Source_File_Name
(Parent_With_Very_Long_Name.Child, Spec_File_Name => "parent-child.ads");
package Parent_With_Very_Long_Name.Child is
end Parent_With_Very_Long_Name.Child;
, который все очень но как другие подразделения узнают об этом? (GNAT имеет исходную модель компиляции). Один ответ заключается в том, чтобы поместить прагму в файл конфигурации, gnat.adc
по умолчанию. Лучше ответить на использование файлов проекта GNAT и package Naming
, как предположил Джейкоб Спарр Андерсен.
Обе эти ссылки говорят вам * не * использовать 'Source_File_Name_Project'. Тем не менее, я уверяю вас, что «Source_File_Name» работает, но если вы хотите, чтобы мы вам помогли, вы должны ** показать нам, что вы на самом деле писали, и какой файл вы написали. И, для предпочтения, фактическое сообщение об ошибке ты получил. –