`
isiqi
  • 浏览: 16539716 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

_cdecl和__stdcall修饰对比

阅读更多

_cdecl和__stdcall修饰对比

由_cdecl和__stdcall修饰的函数在被调用的时候的差别。
两个都是函数参数从右到左入栈,但是有细微的差别。
_cdecl修饰的函数,它的参数所占用的堆栈是由调用函数去清空的。
__stdcall修饰的函数,它的参数所占用的堆栈是由被调用的函数自己返回的时候清空的。

写一个简单的程序,查看汇编代码进行对比。

分享到:
评论

相关推荐

    函数的调用规则(__cdecl,__stdcall,__fastcall,__pascal)

    - **返回值**:与 __cdecl 和 __stdcall 类似,返回值通常存储在 EAX 寄存器中。 - **修饰名格式**:函数名修饰为 `@functionname@number` 形式。 #### 应用场景: - **性能敏感的代码**:当函数调用频繁且对性能有...

    关于函数调用方式__stdcall和__cdecl详解

    本文将详细讲解两种常见的函数调用约定:__stdcall和__cdecl。 首先,__stdcall是C++中的标准调用方式,它的主要特征是参数从右到左入栈,即参数在函数调用时逆序放入堆栈。当函数返回时,使用`retn x`指令来清理...

    __stdcall 和 __cdecl 的区别浅析

    本文将深入探讨两种常见的调用约定:`__stdcall` 和 `__cdecl`,这两种约定在C++和Windows API编程中尤其常见。 首先,`__cdecl` 是C Declaration的缩写,它是C语言默认的函数调用约定。在`__cdecl`约定中,参数按...

    函数调用约定

    本文将详细介绍四种常见的函数调用约定:`_cdecl`、`_stdcall`、`_fastcall` 和 `_thiscall`。 ### 1. _cdecl (C Declaration) `_cdecl` 是 C 和 C++ 缺省的调用约定。在此约定下,参数是从右到左压入栈中的,并且...

    __stdcall调用约定、C调用约定和__fastcall调用约定

    __stdcall、__cdecl和__fastcall各有优势和应用场景,选择合适的调用约定对于优化代码性能和提高程序的可维护性至关重要。了解这些调用约定的具体细节有助于开发者更好地理解底层机制,并能够根据项目需求做出最佳...

    C++builder调用VCdll.pdf

    C++builder调用VCdll.pdf 本文档详细介绍了C++builder调用VC编写的DLL的过程,并对__cdecl、__fastcall、__stdcall三种调用...同时,我们也可以了解到__cdecl、__fastcall、__stdcall三种调用约定的区别和使用方法。

    stdcall与 cdecl

    本文将详细介绍两种常见的函数调用约定:stdcall 和 cdecl,并探讨它们之间的差异及其应用场景。 #### 1. 基础概念介绍 - **cdecl (Caller-Destructor)**:此调用约定是C语言和大多数C++函数使用的默认约定。在...

    Windows调用约定.pdf

    在提供的文件中,提及了四种调用约定:__cdecl、__stdcall、__thiscall 和 __fastcall。下面将对这些调用约定进行详细介绍。 1. __cdecl 调用约定 __cdecl 是 C 和 C++ 默认的函数调用约定。在 __cdecl 约定下,...

    c/c++中函数调用方式

    根据给定的文件信息,我们可以深入探讨C/C++中几种主要的函数调用方式:__cdecl、__stdcall和__fastcall,以及C++特有的thiscall。 ### __cdecl `__cdecl`,即“C声明”或“C default”,是C/C++中默认的调用约定...

    C++关键字技术

    本文将深入探讨VC++中几种常见的调用约定:`__cdecl`、`__stdcall`、`__fastcall`和`__pascal`,以及它们在实际开发中的应用。 #### 1\. `__cdecl` `__cdecl`(C默认调用约定)是最常用的调用约定之一。在`__cdecl...

    C++动态库编写

    本文将详细介绍两种常见的函数调用约定:`_stdcall` 和 `_cdecl`,并通过具体的示例代码来帮助读者更好地理解它们的工作原理。 #### 二、_stdcall 调用约定详解 `_stdcall` 是一种广泛应用于Windows API中的函数...

    剖析C++函数调用约定

    在Visual C/C++编译器中,有四种主要的函数调用约定:__cdecl、__stdcall、__fastcall和thiscall。了解这些约定的差异对于编写高效且兼容的代码至关重要。 首先,__cdecl是C和C++的默认调用约定。在这种约定中,...

    微软2013年暑期实习笔试题及答案分析

    【标题】和【描述】提及的是2013年微软暑期实习生笔试中关于函数调用约定(calling conventions)的问题,主要包括_cdecl、_stdcall、_pascal、_fastcall和_thiscall这五种调用约定。这些约定决定了参数如何在函数...

    cdecl函数调用,了解printf这样的函数调用,对比stdcall会更清楚.zip

    在C/C++编程语言中,函数调用约定(Calling Convention)是至关重要的,因为它定义了函数参数...通过对比`printf`等`cdecl`约定的函数和`stdcall`约定的函数,我们可以更好地理解这两种调用约定的工作原理和应用场景。

    C++调用的多种形式

    C++调用约定是指在C++中函数调用的多种形式,它们是:_stdcall、_cdecl、_fastcall、thiscall和naked call。每种调用约定都有其特点和应用场景。 _stdcall调用约定 _stdcall调用约定是Pascal程序的缺省调用方式,...

    函数调用约定与函数名称修饰规则.pdf

    - **名称修饰**:对于C++,`__stdcall`的名称修饰方式是在名字前添加下划线,在名字后添加`@`和参数大小,例如:`_functionname@number`。 - **适用场景**:广泛用于Windows API函数调用。 #### 4. thiscall - **...

    TEST DLL (__stdcall)

    在提供的压缩包文件“dllTest5_stdcall修饰”中,可能包含了演示如何创建和使用`__stdcall`调用约定的DLL的源代码示例。通过分析和运行这些示例,你可以更深入地理解`__stdcall`的工作原理以及如何在实践中应用。 ...

    2013年微软暑期实习生校园招聘笔试试题加详解

    1. **_cdecl**:这是C和C++默认的函数调用约定。参数从右向左压栈,由调用者负责清理堆栈。因此,_cdecl允许可变参数列表,如`printf`函数。但这种调用约定会导致生成的代码较大,因为每个调用者都需要处理堆栈清理...

Global site tag (gtag.js) - Google Analytics