小弟有一个疑问,至今不解“BCB中的类函数定义__fastcall有什么用处”

hzbigdog 2003-12-24 08:32:33
小弟有一个疑问,至今不解“BCB中的类函数定义__fastcall有什么用处”
...全文
72 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TopCat 2003-12-30
  • 打赏
  • 举报
回复
那就是说自己的函数穆,没有必要声明成__fastcall咯!

——是的。
hzbigdog 2003-12-30
  • 打赏
  • 举报
回复
那就是说自己的函数穆,没有必要声明成__fastcall咯!
ThinkX 2003-12-28
  • 打赏
  • 举报
回复
其实也不能说多耗内存,因为是使用三个寄存器(如ECX)传递参数的,所以如果参数多于3个,那么其他的参数也会压栈的。
__fastcall是delphi的默认调用方式,而bcb中C++默认的调用方式是__cdecl。因为bcb使用了vcl,所以必须使用__fastcall。在vc中也有__fastcall,不过和bcb中的__fastcall是不同的,bcb中有一个__msfastcall和vc中的__fastcall是兼容的。
在windows中,可以被任何编译器识别的唯一的方式就是__stdcall,它也是windows dll函数的调用方式。
hzbigdog 2003-12-28
  • 打赏
  • 举报
回复
还是有点不明白 顶!

那么函数用__fastcall修饰是不是执行效率提高了,但是将会多消耗一点内存?
aliker 2003-12-28
  • 打赏
  • 举报
回复
__fastcall修饰函数,表示它的参数是用EAX,EDX,ECX按照从左到右的顺序传递的。它的参数先放入寄存器,然后再入栈的。如果参数多于三个,那么其他的参数直接入栈。而且如果参数为结构类型或浮点型也不会放入寄存器,而直接入栈。
hzbigdog 2003-12-25
  • 打赏
  • 举报
回复
那么函数用__fastcall修饰是不是执行效率提高了,但是将会多消耗一点内存?
geniusdhc 2003-12-24
  • 打赏
  • 举报
回复
路过,有分给点
pzoon 2003-12-24
  • 打赏
  • 举报
回复
UP
shadowstar 2003-12-24
  • 打赏
  • 举报
回复
这个问题已经问过很多遍了,在哪儿搜都可以搜得到。

顺便给偶的贴子打个广告,希望有人参与讨论:__closure & COM
http://expert.csdn.net/Expert/topic/2596/2596260.xml?temp=.8210871
shadowstar 2003-12-24
  • 打赏
  • 举报
回复
这个问题已经问过很
shadowstar 2003-12-24
  • 打赏
  • 举报
回复
__fastcall和_fastcall是BCB是特有的关键字,只能用于修饰函数,其作用是指定函数使用“寄存器”调用规则,使用语法如下:
return_type __fastcall functionname(parmlist);
在BCB中,所有属于VCL的成员函数,必须是__fastcall 类型,编译器将“寄存器”调用规则和C调用规则、PASCAL及WIN32调用规则是同等对待的。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧