2013-10-14 92 views
0

中提供的elipsis(...)我必須使用使用多態的wsdl,在c代碼中進行GSOAP調用。根據GSOAP文檔(8.2使用typemap.dat文件自定義數據綁定),它需要修改typemap.dat,該基類型作爲包裝器類型重新聲明爲基類型。因爲我只想改變用法,所以我在聲明部分中使用了elipsis(...),正如文檔中所建議的那樣,但wsdl2h似乎並不理解elipsis並將它們放在輸出頭文件中,在代碼構建過程中會導致語法錯誤。wsdl2h無法理解在聲明部分

加在typemap.dat做了多態結合:

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

任何人都可以請幫助或指出,如果我在這裏做錯了什麼?

回答

0

省略號意味着代表ns__PolymorphicStruct的wsdl2生成的定義,所以在你的情況下,你將最終得到兩個聲明。

用途:

[ 
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 

其中\用於允許的聲明繼續到下一行。