Gcc赢得';t识别带有'的Ada;d单元
我试图编译一个Ada单元,它的规范声明为三级包名,比如包A.B.C,但编译失败,抱怨没有单元A.B 也就是说,它似乎只搜索名为A-B.ads的文件,而不搜索A-B-C.ads。 如何让gcc查找正确的文件?Gcc赢得';t识别带有'的Ada;d单元,ada,Ada,我试图编译一个Ada单元,它的规范声明为三级包名,比如包A.B.C,但编译失败,抱怨没有单元A.B 也就是说,它似乎只搜索名为A-B.ads的文件,而不搜索A-B-C.ads。 如何让gcc查找正确的文件? 感谢您的帮助。与A.B.C表示与A和A.B以及A.B.C的。 所以它确实在寻找正确的文件,但它也需要另外两个。 确保搜索路径中的所有依赖项都可用 另外,确保文件名是小写的(a.ads,a-b.ads,a-b-c.ads),这是GNAT/gcc所期望的。点运算符对Ada包之间的关系有特殊意义与
感谢您的帮助。
与A.B.C
表示与A
和A.B
以及A.B.C
的。
所以它确实在寻找正确的文件,但它也需要另外两个。
确保搜索路径中的所有依赖项都可用
另外,确保文件名是小写的(a.ads
,a-b.ads
,a-b-c.ads
),这是GNAT/gcc所期望的。点运算符对Ada包之间的关系有特殊意义<代码>与A.B.C一起
表示包C是包B的子包,B是包A的子包。这意味着如果没有父包,也不能使用子包。换句话说,要允许子包上的with
语句,必须存在父包,尽管它可以为空。因此,您需要创建包A和包B,如下所示:
-- Spec
package A is
-- Empty spec
end A;
-- Spec
package A.B is
-- Empty spec
end B;
-- Spec
package A.B.C is
-- Definitions of package C
end C;
请注意,如果规范没有过程,则不允许添加包体。还请注意,使用A.B.C是否意味着使用A和使用A.B取决于运行时系统的配置。如果添加pragma\u body,则可以使用其他禁止的包体代码>(或相应的)符合规范。而且,我认为RTS配置与是否使用Ada.Strings.Unbounded无关
表示Ada.Strings
可见(它是)。