如何设置pragma来约束Ada';将函数转换为Pascal

如何设置pragma来约束Ada';将函数转换为Pascal,ada,Ada,我打算在一些程序中使用Ada。我记得在某个地方读到过这样一篇文章:使用pragmas可以设置编译器指令来优化程序。更具体地说,我记得读到过,如果您只需要Ada功能的有限子集(基本上与Pascal相对应,但使用Ada的强类型),那么可以使用pragmas来指定一种“类似Pascal的模式”(我使用这个术语是因为缺少更好的表达式)。我的目标是禁用那些我不需要的运行时检查(因为我只需要基本功能),从而减少可执行文件的大小并提高性能。 我的问题是:如何设置这样一个pragma?我应该指定哪些参数/选项?

我打算在一些程序中使用Ada。我记得在某个地方读到过这样一篇文章:使用pragmas可以设置编译器指令来优化程序。更具体地说,我记得读到过,如果您只需要Ada功能的有限子集(基本上与Pascal相对应,但使用Ada的强类型),那么可以使用pragmas来指定一种“类似Pascal的模式”(我使用这个术语是因为缺少更好的表达式)。我的目标是禁用那些我不需要的运行时检查(因为我只需要基本功能),从而减少可执行文件的大小并提高性能。 我的问题是:如何设置这样一个pragma?我应该指定哪些参数/选项?
谢谢

除非我误解了你,否则{'Pascal-like mode}听起来像是一个特定于实现的pragma。
尽管存在“优化
[时间或空间]和
限制”的杂注,可能会影响您的最终大小。

那种{'Pascal-like mode}听起来像是特定于实现的杂注,除非我误解了您。
虽然存在“优化
[时间或空间]和
限制”的杂注,可能会影响您的最终尺寸。

对不起,这是个坏主意。如果您想避免任务构造带来的任何可能的开销,那么就不要使用任务!人们通常希望抑制约束检查(您可以在GNAT中使用
-p
进行编译),但根据我的经验,您很少会得到一点改进


Ada现在有,这阻止你使用某些功能;你可以看到蚊虫。其目的是支持生产高完整性软件、便携式软件或高效的任务运行时。

对不起,这是个坏主意。如果您想避免任务构造带来的任何可能的开销,那么就不要使用任务!人们通常希望抑制约束检查(您可以在GNAT中使用
-p
进行编译),但根据我的经验,您很少会得到一点改进


Ada现在有,这阻止你使用某些功能;你可以看到蚊虫。其目的是支持生产高完整性软件、便携式软件或高效的任务运行时。

这可能是因为误解

Ada不是Pascal的超集。将它们视为父语言的兄弟语言更为准确。Pascal最初由Niklaus Wirth开发,是Algol 60的简化版。Algol的人转而使用后来的Algol 68

相反,Ada是一种从Algol60语法中借来的全新语言(与Java从C语法中借来的方式非常相似)。然而,它甚至比Algol68复杂得多(有些人会使用“功能性”一词)

因此,在Ada编译器中请求“Pascal标志”与在Java编译器中请求“C++标志”非常相似

如果您只是在寻找一个免费的Pascal编译器,您可以转而考虑使用或


如果您只是想减少未使用的运行时设施的开销,那么您应该研究一下,它允许您有选择地禁止访问Ada运行时的某些部分。这使您可以摆脱诸如浮点、动态分配、动态调度、任务分配、异常/运行时约束检查等问题。

这可能是因为误解

Ada不是Pascal的超集。将它们视为父语言的兄弟语言更为准确。Pascal最初由Niklaus Wirth开发,是Algol 60的简化版。Algol的人转而使用后来的Algol 68

相反,Ada是一种从Algol60语法中借来的全新语言(与Java从C语法中借来的方式非常相似)。然而,它甚至比Algol68复杂得多(有些人会使用“功能性”一词)

因此,在Ada编译器中请求“Pascal标志”与在Java编译器中请求“C++标志”非常相似

如果您只是在寻找一个免费的Pascal编译器,您可以转而考虑使用或


如果您只是想减少未使用的运行时设施的开销,那么您应该研究一下,它允许您有选择地禁止访问Ada运行时的某些部分。这使您可以摆脱浮点、动态分配、动态分派、任务分配、异常/运行时约束检查等问题。

但请注意,编译器不需要利用这些限制来提高效率()。@SimonWright-不仅如此,据我所知,实际上根本不需要支持甚至强制执行这些限制。如果您想要不使用运行时的这一部分的实际效果(而不仅仅是记录您不打算使用它的内容),那么您应该检查编译器文档,看看它对附录H内容的实际作用。但是请注意,编译器不需要利用这些限制来提高效率()@SimonWright-不仅如此,据我所知,它根本不需要支持甚至强制执行这些限制。如果您想要不包含运行时的这一部分的实际效果(而不仅仅是记录您不打算使用它的内容),那么您应该检查编译器文档,看看它对附录H内容的实际作用。