如何设置编译指示将Ada的功能限制为Pascal

时间:2013-03-07 05:31:03

标签: ada

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

3 个答案:

答案 0 :(得分:4)

这可能来自误解。

Ada不是Pascal的超集。将它们视为母语Algol 60的兄弟语言更为准确。 Pascal是由Niklaus Wirth开发的,是Algol 60的简化版本.Algol人员反而采用了Algol 68的方式。

Ada是一种从头开始设计的新语言,它借鉴了Algol 60的语法(就像Java借用C的语法一样)。然而,它甚至比Algol 68更复杂(有些人会使用“功能”一词)。

因此,在Ada编译器中要求“Pascal标志”就像在Java编译器中要求“C ++标志”一样。

如果您只是在寻找免费的Pascal编译器,您可能会考虑使用Free PascalGNU Pascal

如果您只是想减少未使用的运行时设施的开销,则应该查看Annex H,这样您就可以使用pragma Restrictions()来有选择地禁止访问部分Ada运行时。这允许你摆脱浮点,动态分配,动态调度,任务,异常/运行时约束检查等事情。

答案 1 :(得分:3)

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

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

答案 2 :(得分:-1)

{'Pascal-like mode'}听起来像是一个特定于实现的编译指示,除非我误解了你。 虽然存在可能影响最终大小的“优化[time or space] and限制”编译指示。