社区
新手乐园
帖子详情
typedef void (CALLBACK * LINECALLBACK)()是什么意思?
csoapy
2005-03-20 09:31:19
这是tapi.h里的定义
typedef void (CALLBACK * LINECALLBACK)(
DWORD hDevice,
DWORD dwMessage,
DWORD dwInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3
);
谢谢!!
...全文
779
15
打赏
收藏
typedef void (CALLBACK * LINECALLBACK)()是什么意思?
这是tapi.h里的定义 typedef void (CALLBACK * LINECALLBACK)( DWORD hDevice, DWORD dwMessage, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2, DWORD dwParam3 ); 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
csoapy
2005-03-24
打赏
举报
回复
cout<< ? 哪不是重载<<吗?
俺只是想要个使用这种 typedef 定义的例子,肯求高手出招。
还有那个(CALLBACK * LINECALLBACK) 中的 *是什么意思?
返回一个指针吗?
水晶绿鱼
2005-03-24
打赏
举报
回复
对于回调函数这个东西我不太懂,谁能举个例子解释一下吗? 看程序的结构好像是用 typedef 声明了一种新的函数指针类型,就是不太懂 (CALLBACK * LINECALLBACK) 这部分内容的含义。
simon78
2005-03-23
打赏
举报
回复
关注ing
galanz
2005-03-23
打赏
举报
回复
马甲加把劲,给个标准
yuchengliu
2005-03-23
打赏
举报
回复
typedef void (CALLBACK * LINECALLBACK)(
DWORD hDevice,
DWORD dwMessage,
DWORD dwInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3
);
LINECALLBACK为一个返回值为void类型 参数入栈方式为CALLBACK 参数为。。。。。。。的指针
我这样认为。。如有不正确,请指正一下
oyljerry
2005-03-23
打赏
举报
回复
函数体中实现就可以了
cout<<
csoapy
2005-03-23
打赏
举报
回复
谁举个例子?
我先给出这样的定义:
typedef void (CALLBACK * LINECALLBACK)( int hDevice );
要求在屏幕上输出形参 hDevice 的值。
visual4825
2005-03-22
打赏
举报
回复
收藏
bluedodo
2005-03-21
打赏
举报
回复
很详细了
csoapy
2005-03-21
打赏
举报
回复
CALLBACK 是个类型名吗?
参数传递方式而已。如:
void fun(int p1,int p2)
CALLBACK 也就是pascal 方式时被编译器翻译成:
push p1
push p2
call fun
而 c/c++ 的参数传递方式就被翻译成:
push p2
push p1
call fun
参数传递方式,入栈顺序不同而已。
怎会是 参数类型为CALLBACK
llmsn
2005-03-21
打赏
举报
回复
这个typedef是用来产生类型别名的一个关键字,上面那个函数定义就是用来产生一个参数类型为CALLBACK * LINECALLBACK的函数别名,但上面的函数好像没有别名.
csoapy
2005-03-21
打赏
举报
回复
callback 是告诉编译器发生函数调用时“本函数”使用的参数传递顺序。
而不是一种类型啊?
还是不明白。。。。。。
windef.h里面是这样做的:
#define pascal __stdcall
#define CALLBACK __stdcall
#define PASCAL __stdcall
#define CALLBACK PASCAL
就是发生函数调用时传递参数的顺序(入栈次序)与c/c++相反。
还有,windows 是用c写的,为何要用混用两种函数参数传递方式呢?以区别函数的回调或者不回调?
nodummy
2005-03-20
打赏
举报
回复
没有定义函数指针,typedef不导致空间的分配,也不产生新的类型,楼上搞清楚……
e5022
2005-03-20
打赏
举报
回复
1
定义了一个函数指针,这个函数的返回类型和参数表已经在下面给出了,声明一个这样类型的变量,然后把一个参数表和返回值表完全相同的函数的函数名(不含括号,因为函数名就是函数的入口地址)赋给这个变量,以后使用此变量后加(参数)就可以调用这个函数了。
具体应用就是如上面所定义的那样,用于CALLBACK回调。比如一个数据结构的遍历程序,尽管我们有了非常先进的搜索算法,但是却无法定义遍历每个结点后需要作什么,这时可以把函数地址作为实参赋给遍历函数。遍历函数每取得一个结点就调用这个函数。这样设计的程序通用性非常高,可以到处使用却无需改代码。缺点就是你问问题的原因,不易理解
nodummy
2005-03-20
打赏
举报
回复
CALLBACK应该是__stdcall的宏定义
其实这个是一个类型定义(并不产生新的类型,只是一个类型别名)
这个是一个函数指针类型的别名,这种函数指针是回调函数(使用了__stdcall调用协议),并且各个参数的类型是DWORD的。
另外,后面的参数名字没有意义……
typedef
void
(*comm_
callback
)(char*, int,
void
*); 是
什么意思
?
定义一个函数指针类型comm_
callback
这个函数类型是这样:返回值
void
参数:char*,int,
void
* 可以直接使用comm_
callback
定义一个函数指针 如:comm_
callback
pFun;
typedef
void
(*
callback
_t)(int event,
void
* user,
void
*info);
typedef
void
(*T)(
void
*)的含义
对于
typedef
void
(*T)(
void
*),我们进行一层层的剖析 首先写成
void
(*T)() 可以看出 T是一个指针,是一个指向返回值为
void
,参数为空的类型的函数指针 在加上(
void
*) 为
void
(*T)(
void
*) 就变成了一个指向 返回值为
void
,参数为
void
*类型的指针 在加上上
typedef
,加上后,T就不再是一个函数指针了,它代表着一种类...
typedef
void
(*Func)(
void
)的理解
引用链接: https://blog.csdn.net/Fantanstical/article/details/85223600.
typedef
void
(*Func)(
void
)的理解
typedef
和 #define 很类似。区别是:
typedef
是在编译过程中被解析的,而 #define 是在编译之前的预处理时被破解的; #define 只是对所定义的别名的简单替换,而
typedef
则要灵活的多。总的来说
typedef
可以做到 #define 能做到的所有事情,而且可以做得更好。
C++函数指针类型
typedef
void
(*conn_
callback
)(net_connection *conn,
void
*args);
定义一个函数指针类型conn_
callback
这个函数类型是这样:返回值
void
参数:net_connection*,int,
void
* 可以直接使用conn_
callback
定义一个函数指针 如:conn_
callback
pFun; //创建链接/销毁链接 要触发的回调函数的 函数类型
typedef
void
(*conn_
callback
)(net_connection *conn,
void
*args); ...
简述
typedef
void
(*Func)(
void
)的使用
简述
typedef
void
(*Func)(
void
)的使用
新手乐园
33,319
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章