我有一个类似函数的宏,它接受一个枚举返回码和一个函数调用。
#define HANDLE_CALL(result,call) \
do { \
Result callResult = call; \
Result* resultVar = (Result*)result; \
// some additional processing
(*resultVar) = callResult; \
} while(0)
花哨的指针转换Result*
和随后的取消引用是否会给您带来任何好处?也就是说,这样做有什么好处:
callResult = call;
// additional processing
*result = callResult;
宏是这样使用的:
Result result;
HANDLE_CALL(&result,some_function());
顺便说一句,这不是我的代码,我也不是 C 高级用户,所以我只是想了解这样做背后是否有任何逻辑。