为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'工作,但如果你想让我们帮你,你**必须**告诉我们你真正写的,什么文件你写而且,对于偏好,实际的错误信息。你得到了。 –