为了账号安全,请及时绑定邮箱和手机立即绑定

请问typedef A B;这句代码是把什么定义成了什么?

请问typedef A B;这句代码是把什么定义成了什么?

慕妹3146593 2022-05-13 13:09:20
typedef DWORD (CALLBACK *LPFNREGISTER)(DWORD,DWORD);CALLBACK是什么意思? 
查看完整描述

1 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

typedef A B
的意思是把B当作和A一样的类型.
你的语句定义了一个函数的类型,类型名字叫LPFNREGISTER,返回值为DWORD,该类型的函数有两个参数都是DWORD类型。

CALLBACK是个在windows.h里面定义的常量,他是这么定义的
#define CALLBACK __stdcall
也就是在CALLBACK的位置,其实是个__stdcall,这是告诉编译器这个函数的调用方式。C语言中有不同的调用方式,比如__stdcall, __cdecl,这个参数是可以省略的,省略之后,编译器则默认为__cdecl的调用方式。但是,微软所有的API都是__stdcall,所以就必须要加上这个参数。你自己也可以定义函数的时候加上这个modifier

int __stdcall Foo();

另外,__stdcall在windows.h中有很多马甲,比较常见的两个是
#define CALLBACK __stdcall
#define WINAPI __stdcall


查看完整回答
反对 回复 2022-05-16
  • 1 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号