xsubpp可以爲從.xs文件轉換而來的c/C++文件生成異常處理代碼。它產生了下面的一段代碼,我xsubpp C++異常
TRY {
char * CLASS = (char *)SvPV_nolen(ST(0));
Example * RETVAL;
RETVAL = new Example();
ST(0) = sv_newmortal();
sv_setref_pv(ST(0), CLASS, (void*)RETVAL);
}
BEGHANDLERS
CATCHALL
sprintf(errbuf, "%s: %s\tpropagated", Xname, Xreason);
ENDHANDLERS
但是編譯生成的代碼時,我得到的編譯錯誤爲TRY,BEGHANDLERS,包羅萬象,ENDHANDLERS沒有在perl的頭文件中的任何地方定義。我修改了我的代碼來定義上述這些令牌。
#define TRY try
#define BEGHANDLERS
#define CATCHALL catch (...) {
#define ENDHANDLERS }
但是我無法給出Xname和Xreason的有意義的定義。上述定義是否正確?我們如何處理上述關鍵字
你檢查,如果這些'#define'令牌可見的實現代碼? – iammilind