社区
新手乐园
帖子详情
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
);
谢谢!!
...全文
700
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) 中的 *是什么意思?
返回一个指针吗?
jt638250
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的。
另外,后面的参数名字没有意义……
《C深度解析》第7、8章 结构体/共用体/枚举,杂项(自动类型转换、大小端序等)
第7章: 1. 结构体 结构体定义、访问、传参,结构体对齐(offsetof宏... 枚举 第8章: 自动类型转换、大小端序、
typedef
、编译器优化、extern "C"、程序调试、变参函数、do{}while(0)、内嵌汇编、调试版与发行版、断言
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);
C语言中
typedef
void
(*F)(类型)解读
文章目录一、
typedef
void
(*T)(
void
*)1.
void
(*T)()2.
void
(*T)(
void
*)3.
typedef
void
(*T)(
void
*)二、
typedef
void
(*T)(非
void
*指针)1.
void
(*task_func)()2.
void
(*task_func)(uint8_t tb_flag, uint8_t *const power_mode)3.
typedef
void
(*task_func)(uint8_t tb_flag, uint8_t
我对单片机中
typedef
void
(*Button_
CallBack
)(
void
*) 的理解
正常来说
typedef
unsigned int unint32
typedef
struct { *** }structName; 想必大家都不会陌生,但是
typedef
void
(*Button_
CallBack
)(
void
*) 就会很奇怪。 难道是要把
void
等价于 (Button_
CallBack
)(
void
)吗? 实际上你可以理解为一个函数模板,按照这个模板出来的函数输入变量是
void
*指针,输出变量是
void
。 Button_
CallBack
my
CallBack
等价于声明了
typedef
void
(*T)(
void
*)的含义
对于
typedef
void
(*T)(
void
*),我们进行一层层的剖析 首先写成
void
(*T)() 可以看出 T是一个指针,是一个指向返回值为
void
,参数为空的类型的函数指针 在加上(
void
*) 为
void
(*T)(
void
*) 就变成了一个指向 返回值为
void
,参数为
void
*类型的指针 在加上上
typedef
,加上后,T就不再是一个函数指针了,它代表着一种类...
新手乐园
33,311
社区成员
41,784
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章