在 CapnProto 模式中,有任何方法可以前向声明结构,因此您可以制作这样的树结构:
struct ExecuteProgram {
code @0 :Text;
}
struct SequenceProgram {
programs @0 :List(Program)
}
struct IfProgram {
condition @1 :Program;
trueBody @2 :Program;
falseBody @3 :Program;
}
struct Program {
union {
execute @0 :ExecuteProgram;
sequence @1 :SequenceProgram;
if @2 :IfProgram;
}
}
如果我尝试编译它,编译器会给出非常有用的错误消息Parse error
。我认为它在抱怨,因为我Program
在声明之前使用了它。
有没有办法解决?