爲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
。如Jacob Sparre Andersen所建議的,更好的答案是使用GNAT項目文件和package Naming
。
這些鏈接都告訴你*不*使用'Source_File_Name_Project'。儘管如此 - 我向你保證,'Source_File_Name'工作,但如果你想讓我們幫你,你**必須**告訴我們你真正寫的,什麼文件你寫而且,對於偏好,實際的錯誤信息。你得到了。 –