在编译时生成函数

Generate functions at compile-time

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

没有

但是使用领域特定语言 (DSL) 从中生成 Ada 并没有错。这种情况经常发生。

您可以使用通用过程来获得通用主体,只需提供您需要的任何唯一参数即可

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;