在编译时生成函数

时间:2018-07-27 17:11:03

标签: ada

在Ada中,有什么方法可以在编译时生成函数吗?我想生成一个存储函数指针的操作码表。我当前的解决方案是存储包含可以执行的过程的对象,但我宁愿不分配(如果可能)。

2 个答案:

答案 0 :(得分:3)

否。

但是,使用域特定语言(DSL)生成Ada并没有错。那是经常发生的。

答案 1 :(得分:3)

您可以使用通用过程来拥有通用主体,并为其提供所需的唯一参数

with Ada.Text_IO; use Ada.Text_IO;

procedure Hello is
    generic
        -- some sort of parameters
        Value : Integer;
    procedure Do_Op;

    procedure Do_Op is
    begin
        Put_Line(Integer'Image(Value));
    end Do_Op;

    procedure Op1 is new Do_Op(1);
    procedure Op2 is new Do_Op(2);
    procedure Op3 is new Do_Op(3);


begin
  Put_Line("Hello, world!");
  Op1;
  Op2;
  Op3;
end Hello;