首页 > 其他 > 详细

Misc: 那些放在函数定义前的 _cdecl , _stdcall, _fastcall 到底是什么鬼

时间:2016-05-15 21:38:54      阅读:317      评论:0      收藏:0      [点我收藏+]

如果看一些很底层的代码(比如很多库的代码,或者内核代码),会经常见到形如 _cdecl  ,  _stdcall (这个在Windows下的代码中很常见),  _fastcall (这个比较少见)这一类的东西,到底是什么?

这些其实是用来指示编译器做函数调用的时候,应该如何调用,比如说,

  a)参数的传递是放在寄存器中还是放在栈中

  b)参数是从左传到右还是从右传到左

  etc.

说得专业一点,就是calling convention. 

这些关乎系统底层ABI层面的东西。处理得不好,你的程序在链接的时候就会出现一堆的" Unresolved References" 错误(两个程序在ABI层面上不相容)。

当然一般high-level的程序不需要理会这些。

 

Reference:

  https://en.wikibooks.org/wiki/Embedded_Systems/Mixed_C_and_Assembly_Programming#Calling_Conventions

  https://en.wikipedia.org/wiki/X86_calling_conventions

 

 

 

 

 

 

 

 

 

 

:)

Misc: 那些放在函数定义前的 _cdecl , _stdcall, _fastcall 到底是什么鬼

原文:http://www.cnblogs.com/walkerlala/p/5496054.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!