宏定义的基础知识
#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);