函数调用约定,是指当一个函数被调用时,函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的,当然还有返回值。 __stdcall,__cdecl,__fastcall,__thiscall,__nakedcall,__pascal 参数传递...
分类:
其他好文 时间:
2014-11-09 19:20:12
阅读次数:
212
无法解析的外部符号 _AtlTraceVU,该符号在函数 "public: void __cdecl ATL::CTrace::TraceV(char const *,int,unsigned long,unsigned int,wchar_t const *,char *)const " (?TraceV@CTrace@ATL@@QBAXPBDHKIPB_WPAD@Z)
中被引用
...
分类:
其他好文 时间:
2014-11-05 11:01:35
阅读次数:
503
c的标准库中当然有现成的比较字符串的函数中的 strcmp1 int __cdecl strcmp(_In_z_ const char * _Str1, _In_z_ const char * _Str2) 最近复习考研,手写这些代码是其中的一部分内容,但是我资料上的代码,感觉算法不是...
分类:
其他好文 时间:
2014-10-29 21:00:38
阅读次数:
148
首先,__cdecl,c declaration,C风格声明。或者 c default calling(笔者瞎编的)。(那么问题来了,为什么PASCAL风格被称为std?)调用约定的内容包括三点:参数出入栈顺序,弹栈工作由谁做,以及产生函数名的方式(renaming?)1.在参数入栈顺序上,__cd...
分类:
其他好文 时间:
2014-10-27 12:14:41
阅读次数:
194
共同点: 从右向左压栈实参. 压栈顺序: 1.压实参 2. 压EIP值 3.进入函数后,压EBP值......区别:__cdecl 返回后ADD ESP, 4 (一个int参数)__stdcall返回前 RETN 04 (一个int参数)__fastcall 如果只有两个参数,则不需...
分类:
其他好文 时间:
2014-10-18 09:42:23
阅读次数:
200
调用约定是指程序在函数调用时传递参数和获取返回值所采用的方法:通过寄存器、或通过栈、或者是两者的混合。用于指定Calling Convention的修饰符主要有:__cdecl,__stdcall,__fastcall等。调用约定可以通过工程设置:Setting...\C/C++ \Advanced\CallingConvention 项进行选择,缺省状态为__cdecl。它们决定以下内容:
...
分类:
编程语言 时间:
2014-10-15 19:28:31
阅读次数:
252
预备知识:__stdcall是函数调用约定的一种,函数调用约定主要约束了两件事: 1.参数传递顺序 2.调用堆栈由谁(调用函数或被调用函数)清理 常见的函数调用约定:stdcall cdecl fastcall thiscall naked call__stdcall表示 1.参数从右向左压...
分类:
编程语言 时间:
2014-10-15 14:20:50
阅读次数:
190
今天用了一天的时间看nginx的启动流程,流程还是很复杂,主要的函数调用有十几个之多,通过看源码和上网查资料,弄懂了一些函数,有些函数还在学习中,有些函数还待日后学习,这里记录一下今天所学。加油!
1nginx.c
启动的程序主要在src/core/nginx.c中,和普通函数一样,main函数是其入口函数:下面我们看看main函数的源代码:
int ngx_cdecl
main(int a...
分类:
其他好文 时间:
2014-10-07 21:58:44
阅读次数:
342
如不做特殊说明,本博客所使用的 nginx 源码版本是 1.0.14我们先贴出 main 函数的部分代码: 205 int ngx_cdecl 206 main(int argc, char *const *argv) 207 { 208 ngx_int_t i; 209...
分类:
其他好文 时间:
2014-09-20 15:41:29
阅读次数:
391
在VC SDK的WinDef.h中,宏WINAPI被定义为__stdcall,这是C语言中一种调用约定,常用的还有__cdecl和__fastcall。这些调用约定会对我们的代码产生什么样的影响?让我们逐个分析。首先,在x86平台上,用VC编译这样一段代码: 1 int __cdecl TestC(...