我要使用一个使用多态的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
有人可以帮忙或指出我在这里做错了吗?
答案 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
其中\用于允许声明继续到下一行。