关于C++中的问题

xujamse 2000-05-30 09:11:00

1 在iostream.h中class _CLASSTYPE ios{ ... } 的 _CLASSTYPE是什么意思?
inline streambuf _FAR * _Cdec1 ios::rdbuf(){return bp;} 中的 _FAR * _Cdec1 是什么意思
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogocat 2000-06-06
  • 打赏
  • 举报
回复
_FAR* 表示长指针,也就是说指针的长度为32位的
_Cdecl 表示rdbuf()函数的参数调用规则为C语言标准,在函数调用过程中,参数、返回地址都是存储在系统的堆栈区中,参数的入栈是符合一定规则的,两种常见的规则是C语言规则和PASCAL规则,C语言规则规定参数入栈从右向左,并且堆栈的清除是由调用函数来做的。而PASCAL规则则相反,参数的入栈是由左向右,堆栈的清除是由被调函数处理的。但是应该知道,除了C语言,几乎所有的高级语言都是按照PASCAL函数调用规则的所以要编写为别的语言使用的模块,就应该使用PASCAL规则,
函数应该如下声明:
void _stdcall Fun(arg1,arg2....)
其中_stdcall 告诉编译器,Fun应该按照PASCAL规则编译
江王 2000-05-30
  • 打赏
  • 举报
回复
_CLASSTYPE 应该是一个没有用的东西,可以视若无。
_FAR表示是长指针,即32位指针,是为了与16位程序代码兼容而加的。因为32位程序用的指针都是32位的长指针。
_Cdecl 表示C语言声明方式,编译选项,生成的汇编函数名为_rdbuf,如果不是做很底层的东西如有汇编接口的话,一般不要用它。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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