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