各位大侠,我在看孙鑫的书时,在多线程编程那章里,发现他在函数前总是加了WINAPI这个关键字,想知道加与不加这个有什么用望指教!
解决方案 »
- _com_error at memory location 0x0012f234
- 不知道这样实际序列化的是子类对象还是父类对象?
- 为什么我用VS2008写程序,控件都没有视觉效果?
- 怎样使一个RADIO BUTTON一开始就是选中的呢?帮帮我这只菜鸟啦
- 关于文档/视图的更新问题, 问题比较多. 逐个算分
- 在視圖上畫出的圖標有黑色的背景..
- 请问如何在程序运行时去掉dialog的标题栏????不能在对话框编辑器中去掉
- 急问com高手
- sql语句问题
- 请问如何在windows下申请连续内存空间,并获得其物理地址?
- VC中使用滚动条拖拽失败,解决不了?
- 我用skin++做程序皮肤时,发现datagrid控件窗口滑块不能正常移动???
WINAPI对应__stdcall主要作用是由谁来平栈具体可参考:http://msdn.microsoft.com/en-us/library/zxk0tw93(VS.80).aspx
关于std_call或cdecl_call,是编译时候的函数约定,主要决定函数调用后的栈还原是由调用者来做,还是函数自身来做,具体可以在网上查阅更详尽的资料。
简单来说,windows的系统api都是WINAPI,你自己写线程函数一般也要是这个约定,这是windows规定的。
我做个补充,除了winapi之外,APIENTRY、FAR PASCAL甚至于CALL BACK都被#define成了__stdcall
除了__stdcall,还有__cdecl .etc不同的调用约定表示不同的平栈方式
建议LZ安装Visual Assist X,这个东西很强大,能够快速的定位到被define\typedef的源内容~
而且还有其他很强大的功能~