首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

宏定义的基础知识解决办法

2012-03-23 
宏定义的基础知识#define CHECK_RESULT(hr) \{ \if(FAILED(hr)) \{ \ShowMessage(Error 0x+IntToHex((in

宏定义的基础知识
#define CHECK_RESULT(hr) \
{ \
  if(FAILED(hr)) \
  { \
  ShowMessage("Error 0x"+IntToHex((int)hr,2)+"\n"#hr); \
  return; \
  } \
}
请问,我这样写的话,hr是不是被运行了两遍?
我只想他运行一遍的话,怎么搞?


我知道如果在程序里这样写,就只运行一遍
HRESULT hr;
hr = FUN();
CHECK_RESULT(hr);

但我觉得这样写,就麻烦了...
我只想直接这样写:CHECK_RESULT(FUN());

[解决办法]
hr后没括号不会运行
#define CHECK_RESULT(fun) \
{ \
HRESULT hr; \
hr = fun(); \
if(FAILED(hr)) \
{ \
ShowMessage("Error 0x"+IntToHex((int)hr,2)+"\n"#hr); \
return; \
} \
}

CHECK_RESULT(FUN);

热点排行