Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ada 编译规范文件时出错_Ada - Fatal编程技术网

Ada 编译规范文件时出错

Ada 编译规范文件时出错,ada,Ada,我对艾达有点生疏。我在自己编译规范文件时看到以下错误: gcc -c shapes.ads cannot generate code for file shapes.ads (package spec) gnatmake: "shapes.ads" compilation error 代码在使用主体构建时工作,我可以运行使用该包的程序 那么问题出在哪里呢?这个.ads文件只包含一个包的规范。如果它需要一个主体,就不能这样编译。您必须编译.adb文件 将其视为一个C头(.h)文件。您也不编译它们

我对艾达有点生疏。我在自己编译规范文件时看到以下错误:

gcc -c shapes.ads
cannot generate code for file shapes.ads (package spec)
gnatmake: "shapes.ads" compilation error
代码在使用主体构建时工作,我可以运行使用该包的程序


那么问题出在哪里呢?

这个.ads文件只包含一个包的规范。如果它需要一个主体,就不能这样编译。您必须编译.adb文件

将其视为一个C头(.h)文件。您也不编译它们,只编译.c文件


PS:您可以使用gnatmake,它应该自动解析依赖项并编译所需内容。

这不是一个真正的错误。(是的,我知道它看起来像一个:-)

GNAT的工作方式是将单元的目标代码(包规范和主体,以及任何“is分离”)放在单个“.o”目标代码文件中。因此,在编译主体时会得到目标代码文件——编译主体时会自动引入规范——但不仅仅是规范

例外情况是规范不需要主体,即它不包含需要主体的声明,例如子程序或任务