次のマクロを使用して関数コードを生成します
#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
私はその解決策が好きではありません、それはパフォーマンスを低下させます - それを行うためのホットなアドバイスはありますか?