请问这个宏怎么写?

来源:百度知道 编辑:UC知道 时间:2024/05/05 17:47:00
经常要用到以下语句
TRY
{
m_db.ExecuteSQL(sql);//A 这行代码可能会变
}
CATCH (CDBException, e)
{
SHOWERROR();
return 1;//B 这行也是
}
END_CATCH
---------------------
由于变换的语句比较少,所以我想把它们写成宏,请问要怎么写啊?
想达到的效果是定义一个宏RUNSQL,调用RUNSQL(语句A,语句B);
这样就能将语句放到相应位置
哦,我写出来了,但是现在又有新问题了

A有可能不只一行程序怎么办?
我原来要执行一行代码:m_db.ExecuteSQL(sql);
现在要执行多行:

{
CRecordset rs(&m_db);
CDBVariant varValue;
rs.Open(CRecordset::forwardOnly, sql);
}
而且行数还不确定,请问有什么好办法?
-----------------------------------
不定语句怎么封装成一个宏? 写成函数估计是不可能的,因为要借用上下文的一些变量,全部定义成参数传进去实在太麻烦了
-----------------------------------
3L写法跟我的类似,但是也是没有解决多行语句的问题

看看这样行不,不行的话各位大虾不要扔鸡蛋哈,直接扔菜刀就OK
另外就是宏是代码的替换,普通函数基本上都能用宏替换进行
define RUNSQL((a),(b))
TRY
{
(a);A 这行代码可能会变
}
CATCH (CDBException, e)
{
SHOWERROR();
(b);//B 这行也是
}
END_CATCH

什么叫变换的语句比较少,A和B一起写到宏里面?那TRY CATCH怎么办?

A有可能不只一行程序怎么办?
·····可以把这段代码封装为一个函数,或者另一个宏。