函数指针声明与调用分析
2010-04-25 13:52
239 查看
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 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
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 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
相关文章推荐
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 只声明对象也能调用方法但不起作用的原因分析
- [cnblogs镜像] 只声明对象也能调用方法但不起作用的原因分析
- 针对4.2.2的背光设置调用流程分析(转载)
- eMule源码主要调用流程分析
- Android系统篇之----Binder机制和远程服务调用机制分析
- Hessian源码分析和Hack --让Hessian携带远程调用端的信息
- iOS开发学习第六课——函数的定义、声明和调用
- 为了避免无法确定该调用的构造函数而需将main函数设为先于类的构造而执行,故将其声明为static
- 利用python调用elasticsearch-api来分析数据并作图进行日报邮件发送
- 关于函数声明和调用时参数个数不一致的情况
- 献给汇编初学者-函数调用堆栈变化分析
- dubbo源码分析-客户端DubboInvoker调用服务端体会Netty的非阻塞IO使用
- 关于F28377D调用FFT库做fft时出现结果无穷大的原因分析
- Linux内核分析第四周学习总结——系统调用的工作机制
- 分析在cocos2dx中lua调用c++类的细节
- Linux内核分析第四周学习总结:扒开系统调用的三层皮(上)
- 函数指针的声明方法
- 声明函数指针并实现回调
- C++11中万能的可调用类型声明std::function<...>