##:用来连接##前和##后的字符,使其组成新的字符,主要用途是构造复杂的宏
例如:
#define CONCAT(a, b) a ## b //定义宏
int CONCAT(my, Variable) = 10; 相当于 int myVariable = 10;
例如:
//定义
#define NEW_PAGE_FOR_INT(variableName, parentPage, nameStr, configVariableName, unit, min, max, thisCallBackFun, otherCallBackFun) \
extern UiMenuPage variableName; \
static void variableName##Show(void *par) \
{ \
AppUiSetIntPageShow(&variableName, unit, thisCallBackFun); \
} \
\
static const UiBase *variableName##Handle(void *par) \
{ \
return AppUiSetIntPageHandle(&variableName, par, min, max); \
}
//调用
NEW_PAGE_FOR_INT(setAi2DlPage, Ai2AlignMenu, "AI2-DL", gNvm.aiPar[1].enginL, "", 0, 60000, NULL, SetAi2DlPageCbk);
NEW_PAGE_FOR_INT(setAi2DhPage, Ai2AlignMenu, "AI2-DH", gNvm.aiPar[1].enginH, "", 0, 60000, NULL, setAi2DhPageCbk);
利用此宏定义传参去定义新的函数,通过 ## 连接,实现统一的函数名前缀。
setAi2DlPageShow ,setAi2DlPageHandle
setAi2DhPageShow,setAi2DhPageHandle