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