近来在学习展讯平台,看到一些代码,值得学习,所以摘下来,以做笔记。
如下:
函数指针数组s_key_function[][];
const DCKEYFUNCTION s_key_function[DC_KEY_MAX][DC_FLOW_MODE_MAX] =
{
/*DC_PREVIEW CONT_DOWN DC_CAPTURE DC_REVIEW DC_SAVE DV_PREVIEW DV_RECORD DV_PAUSE DV_REVIEW */
{LeftDCPreview, PNULL, PNULL, PNULL, LeftSave, LeftDVPreview, PNULL, PNULL, PNULL},
{RightDCPreview, PNULL, PNULL, PNULL, RightSave, RightDVPreview, PNULL, PNULL, PNULL},
{UpDCPreview, PNULL, PNULL, PNULL, UpSave, UpDVPreivew, PNULL, PNULL, UpDVReview},
{DownDCPreview, PNULL, PNULL, PNULL, DownSave, DownDVPreview, PNULL, PNULL, DownDVReview},
{LSDCPreview, PNULL, PNULL, Save, LSSave, LSDVPreview, StopRecord, StopRecord, LSDVReview},
{RSDCPreview, RSCountDown, PNULL, RSDCReview, RSSave, RSDVPreview, CancelRecord, CancelRecord, RSDVReview},
{OKDCPreview, PNULL, PNULL, Save, MMIDC_OpenSendPhotoWin, OKDVPreview, PauseOrResume, PauseOrResume, OKDVReview},
};
而其中的每一项都是函数指针(函数名称),
如:LOCAL void LeftDCPreview(void); 参数和返回值都为 void;
那么在调用处,有
s_key_function[0[1]();
就是对函数指针数组中,相应项的调用。