开始学习 BCB ,几个基本申明,请斧正!

hzhxxx 2002-09-09 12:02:05
1. 函数申明

virtual ,__fastcall,_fastcall(对应有 _stdcall __stdcall 等其他两个)
还有函数返回值的顺序问题!

eg:
virtual __fastcall int test1(int a);
virtual _fastcall int test2(int a);
int __fastcall virtual test3(int a);
int virtual __fastcall test4(int a);

有什么区别??

是不是有一种比较通用的申明方法!


...全文
46 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
hzhxxx 2002-09-23
  • 打赏
  • 举报
回复
谢谢!
TopCat 2002-09-17
  • 打赏
  • 举报
回复
_fastcall和__fastcall是一样的,作用是在可能的情况下,将函数的前3个参数分别放入寄存器EAX, EDX和ECX。所有Form类中的成员函数必须用__fastcall方式调用。

_stdcall和__stdcall也是一样的,他使用了符合Windows标准(但不同与C标准)的函数调用方式,主要用于Windows下的垮语言调用(比如DLL的导出函数)。

virtual int __fastcall 和 int virtual __fastcall 应该是毫无区别。



============================================
★仗剑走江湖 小侠令狐虫★
============================================
TopCat 2002-09-17
  • 打赏
  • 举报
回复
class Explorer只是一个词法分析机制,跟编译机制是没有关系的。


============================================
★仗剑走江湖 小侠令狐虫★
============================================
hzhxxx 2002-09-17
  • 打赏
  • 举报
回复
好,但是在 BCB 的 class exporer 中显示上不一样!
alang_xy 2002-09-14
  • 打赏
  • 举报
回复
有什么区别我不大清楚。但是一般的情况约定俗成的是这样的:
virtual _fastcall int MyFun(...)
...

声明是virtual函数一般要放在最前面,int是返回值类型紧爱着放在函数名的前面,中间是参数的传递方式还有其它的一些编译选项等。

其实编译为什么这样做,你只能问borland了。
hzhxxx 2002-09-13
  • 打赏
  • 举报
回复
主要是:

virtual 和 _fastcall 和 int 的顺序,对申明有什么区别吗?
hzhxxx 2002-09-13
  • 打赏
  • 举报
回复
to 回复人: lj_csdn(大笨蛋) ( ) 信誉:88

谢谢你的回答,你说的我知道,好象你理解错了.

就是我申明一个函数的时候(看下面的)

integer virtual __fastcall SetTextColor(int Color);
virtual integer __fastcall SetTextColor(int Color,int b);
virtual __fastcall integer SetTextColor(int Color,int b,int c);

SetTextColor 现在有什么区别(除了参数以外)
lj_csdn 2002-09-13
  • 打赏
  • 举报
回复
这三个是不同概念的东西virtual 和 _fastcall 和 int
virtual : 用于类的虚函数声明
_fastcall: 函数参数调用顺序声明
int : 函数返回值类型声明,表明函数返回一个整数值,即运行的结果在eax寄存器里
hzhxxx 2002-09-12
  • 打赏
  • 举报
回复
to 回复人: w00dzr(逆风飞扬) ( ) 信誉:100

最多只能有3个参数使用这种方式

不很明白,是不是函数只支持 接受三个 传入参数

问题还是没有解决
申明函数的时候

virtual 和 _fastcall 和 int (返回值) 的顺序有什么区别吗?
ynklj 2002-09-09
  • 打赏
  • 举报
回复
这个问题值的探讨
hzhxxx 2002-09-09
  • 打赏
  • 举报
回复
virtual 和 _fastcall 和 int (返回值) 的顺序有什么区别吗?
耙子 2002-09-09
  • 打赏
  • 举报
回复
__fastcall 和 _fastcall 就BCB的help 来看是没区别的,而且他们编译出来的代码也采用了完全相同传参方式。
hzhxxx 2002-09-09
  • 打赏
  • 举报
回复
virtual __fastcall void SetTextColor(int Color)
{ FTextColor = Color; textcolor(FTextColor); }
void virtual __fastcall SetBackColor(int Color)
{ FBackColor = Color; textbackground(FBackColor); }
virtual void __fastcall GetBackColor(int Color)

是一个类的成员函数,好象没有什么区别?
w00dzr 2002-09-09
  • 打赏
  • 举报
回复
virtual 是类中的虚成员函数。
_fastcall 是BCB特有的调用方式,使用这种方式就告诉编译器将用CPU寄存器来进行参数传递。最多只能有3个参数使用这种方式
int 只是返回值的类型。
w00dzr 2002-09-09
  • 打赏
  • 举报
回复
virtual 是类中的虚成员函数。
_fastcall 是BCB特有的调用方式,使用这种方式就告诉编译器将用CPU寄存器来进行参数传递。最多只能有3个参数使用这种方式
int 只是返回值的类型。
hup 2002-09-09
  • 打赏
  • 举报
回复
UP
pb_bulletsoft 2002-09-09
  • 打赏
  • 举报
回复
关心!
hzhxxx 2002-09-09
  • 打赏
  • 举报
回复
up
hzhxxx 2002-09-09
  • 打赏
  • 举报
回复
请帮我区分!

13,825

社区成员

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

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