鬼火狼烟吧 关注:230贴子:5,311
  • 7回复贴,共1

这是什么意思呀?第一次见

只看楼主收藏回复

.....
extern int _Cdecl _8087;
.....(略)
.....
int _Cdecl absread (int drive, int nsects, int lsect, void *buffer);
.....
这里的句子是什么意思?
为什么absread前面还有一个_Cdecl?
函数返回值是什么?
下画线有什么特别的意思么


IP属地:湖南1楼2006-05-25 21:27回复
    _cdecl是调用函数清


    2楼2006-05-25 21:30
    回复
      2026-03-06 11:20:20
      广告
      不感兴趣
      开通SVIP免广告
      就几个字,没法理解呀!说明白点撒!
      先谢


      IP属地:湖南3楼2006-05-26 09:25
      回复
        _stdcall,_cdecl,_fastcall thiscall nakedcall 这几个都是函数调用的约定,由于OS的差异,调用函数的方法有所区别,为了保证一致就需要显式给出调用这个函数的方法,这个不是返回值,返回值是最前面的int

        通常在windows程序开发中,我们最常用的就是_stdcall和_cdecl,因为_stdcall是windows调用函数的默认方式,而_cdecl是C语言的调用函数的默认方式,之间的区别就下面几点:
        _stdcall方式调用的函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈。
        _cdecl调用方式按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调用者来维护的(正因为如此,实现可变参数的函数只能使用该调用约定)。

        另外的更深入的区别还有函数修饰符的不同,这部分已经是编译原理了,这里打住呵呵,另外在DOS下普遍用的PASCAL调用约定,到32位的系统上就直接转换成_stdcall了,没有本质区别.


        4楼2006-05-26 10:54
        回复
          extern int _Cdecl _8087;
          这个呢?这句是什么意思
          extern我明白,但后面的就不知道是怎么意思了
          _8087似乎不是函数呀


          IP属地:湖南5楼2006-05-26 19:47
          回复
            _8087是变量丫,没人限制_cdecl非要修饰函数的呵呵,外部变量的行为也是可以控制的。

            貌似你的程序是单片机程序吧.


            6楼2006-05-29 09:51
            回复
              在写嵌入式系统的应用程序
              当时溜达到头文件里去了,呵呵
              不看不知道,一看吓一跳,呵呵,觉得不知道的东西真是太多了
              呵呵


              IP属地:湖南7楼2006-05-29 11:56
              回复
                保持头脑清醒,迷失是很容易地,强烈建议认为自己头脑清醒的人去看windows.h~


                8楼2006-05-29 12:31
                回复