CapnProto 中的前向声明

Forward declarations in CapnProto

在 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

有什么解决办法吗?

原来你不需要前向声明,我只是少了一个分号。我说 Parse error 是一个可怕的错误消息是什么意思?