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
是一个可怕的错误消息是什么意思?
在 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
是一个可怕的错误消息是什么意思?