我使用下面的宏来生成函数代码
#define EXTRACT_INSTRUCTION32_FIELD(insName,fieldName,fieldOffset) \
insName##Instruction::##fieldName val; \
val = static_cast<##insName##Instruction::##fieldName##>((hexIstruction & ##insName##Mask_##fieldName) >> fieldOffset); \
return val
但我不想总是使用return val
。另外我不想把这个宏拆分为2个宏。我该怎么做?想用一些isRet
#define EXTRACT_INSTRUCTION32_FIELD(insName,fieldName,fieldOffset,isRet) \
insName##Instruction::##fieldName val; \
val = static_cast<##insName##Instruction::##fieldName##>((hexIstruction & ##insName##Mask_##fieldName) >> fieldOffset); \
if (##isRet)\
return val
我不喜欢那个解决方案,它会降低性能 - 有什么建议很热吗?