函数指针声明与调用分析

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年8月14日

  hdf5库函数指针和win32函数指针示例

  hdf5库:

  H5_DLL herr_t  H5Aiterate(hid_t loc_id, unsigned *attr_num, H5A_operator_t op,void *op_data)

  转到H5A_operator_t定义:

  typedef herr_t (*H5A_operator_t)(hid_t location_id/*in*/, const char *attr_name/*in*/, void

  *operator_data/*in,out*/);

  解释:H5A_operator_t为指向函数的指针,该指针指向的函数参数列表与上同;

  调用示例:

  //函数声明

  herr_t attr_info(hid_t loc_id, const char *name, void *opdata);

  //传递函数指针给调用函数

  int idx = H5Aiterate(dataset, NULL, attr_info, NULL);

  Win32:

  typedef struct tagWNDCLASSEXA {

  UINT        cbSize;

  /* Win 3.x */

  UINT        style;

  WNDPROC     lpfnWndProc;

  int         cbClsExtra;

  int         cbWndExtra;

  HINSTANCE   hInstance;

  HICON       hIcon;

  HCURSOR     hCursor;

  HBRUSH      hbrBackground;

  LPCSTR      lpszMenuName;

  LPCSTR      lpszClassName;

  /* Win 4.0 */

  HICON       hIconSm;

  } WNDCLASSEXA, *PWNDCLASSEXA, NEAR *NPWNDCLASSEXA, FAR *LPWNDCLASSEXA;

  window结构,其中,指针lpfnWndProc指向窗口消息处理函数,指针对象为指向函数的指针:

  typedef LRESULT (CALLBACK* WNDPROC)(HWND, UINT, WPARAM, LPARAM);

  解释:WNDPROC为指向函数的指针,不仅声明了函数参数列表,还指定了函数的调用方式CALLBACK(__stdcall)。

  调用示例:

  //函数声明

  LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

  //传递函数指针给结构体成员

  WNDCLASSA     wndclass ;

  wndclass.style         = CS_HREDRAW | CS_VREDRAW ;

  wndclass.lpfnWndProc   = WndProc ;

  wndclass.cbClsExtra    = 0 ;

首页 1 2 尾页

相关文章