wsdl2h无法理解声明部分提供的省略号(...)

时间:2013-10-14 11:42:32

标签: c gsoap

我要使用一个使用多态的wsdl,在c代码中进行GSOAP调用。根据GSOAP文档(8.2使用typemap.dat文件自定义数据绑定),它需要在typemap.dat中进行修改,这是将基类型重新声明为包装类型。因为,我只是想改变用法,所以我在文档中建议的声明部分使用了elipsis(...),但是wsdl2h似乎并不理解elipsis并将它们放在输出头文件中,在代码构建期间导致语法错误。

在typemap.dat中添加了多态绑定:

[ 
struct __ns__PolymorphicStruct
{ 
   int __type;
   void *__item;
   struct ns__PolymorphicStruct *__self; 
};
]
ns__PolymorphicStruct = ... | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

有人可以帮忙或指出我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

省略号用于表示wsdl2生成的ns__PolymorphicStruct定义,因此在您的情况下,您将最终得到两个声明。

使用:

[ 
struct __ns__PolymorphicStruct
{ 
   int __type;
   void *__item;
   struct ns__PolymorphicStruct *__self; 
};
]
ns__PolymorphicStruct = | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

或使用以下内容(ns__PolymorphicStruct的覆盖声明的位置会改变):

ns__PolymorphicStruct = \ 
struct __ns__PolymorphicStruct\
{\
   int __type;\
   void *__item;\
   struct ns__PolymorphicStruct *__self;\
};\
| struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

其中\用于允许声明继续到下一行。