C语言系统调用约定

 常见的函数调用约定

cdecl,stdcall,fastcall,thiscall,naked call

简单介绍

HANDLE WINAPI GetStdHandle(
    _In_ DWORD nStdHandle
);
//WINAPI不是返回值的类型,HANDLE才是

像这种函数的返回值我们如果不知道WINAP是系统调用约定的话就很难看懂这函数的返回值为什么这么奇怪

#define WINAPI __stdcall

默认情况下,我们的函数调用都是遵循__stdcall这个规则的。当然,也有诸如__cdecl__pascal等规则。

使用__stdcall还是__cdecl__pascal,在纯Windows编程下并非特别需要。

到此这篇关于C语言系统调用约定的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言系统调用约定

     常见的函数调用约定 cdecl,stdcall,fastcall,thiscall,naked call 简单介绍 HANDLE WINAPI GetStdHandle( _In_ DWORD nStdHandle ); //WINAPI不是返回值的类型,HANDLE才是 像这种函数的返回值我们如果不知道WINAP是系统调用约定的话就很难看懂这函数的返回值为什么这么奇怪 #define WINAPI __stdcall 默认情况下,我们的函数调用都是遵循__stdcall这个规则的.当然,也有

  • 解析go语言调用约定多返回值实现原理

    目录 go简单代码反汇编 go语言调用约定分析 1.C/C++调用约定类别 2.go语言调用约定 go语言如何实现多返回值的 总结 go简单代码反汇编 用简单的代码用以分析go的调用约定及多返回值的返回方式. package main func vals(c, d int) (a int, b int) { e := 1 f := 2 a = c + d + e + f b = d * 2 return } func testMutil() { i, j := vals(1, 2) i = i

  • C语言函数调用约定和返回值详情

    目录 一.函数调用约定 1. 影响函数生成的符号名 2. 影响形参内存的释放者 _stdcall _fastcall _thiscall 二.函数的返回值 1. 0 < 返回值 <= 4字节 2. 4字节 < 返回值 <= 8字节 3. 返回值 > 8字节 一.函数调用约定 _cdecl:C调用约定 _stdcall:Windows标准的调用约定 _fastcall:快速调用约定 _thiscall:C++的成员函数调用约定 以上的函数调用约定入参都是从右向左,只有PASCA

  • C语言三种函数调用约定_cdecl与_stdcall及_fastcall详细讲解

    目录 C语言常用的调用约定 一._cdecl调用约定 二._stdcall调用约定 三._fastcall调用约定 总结 C语言常用的调用约定 以下就是C语言常用的三种调用约定: 调用约定 参数压栈顺序 平衡堆栈 __cdecl 从右往左依次入栈 调用者清理堆栈 __stdcall 从右往左依次入栈 自身清理堆栈 __fastcall ECX/EDX传递前两个参数 剩下的从右往左依次入栈 自身清理堆栈 下面会举例为大家讲解三种调用约定的区别. 一._cdecl调用约定 这是C语言默认的调用约定,

  • C语言GetStdHandle函数使用方法

    目录 函数的接口 作用 参数 返回值 函数的接口 HANDLE WINAPI GetStdHandle( _In_ DWORD nStdHandle ); //WINAPI不是返回值的类型,HANDLE才是,WINAPI是 系统调用约定 作用 该函数用于取得指定的标准设备的句柄(标准输入,标准输出或标准错误). 参数 nStdHandle 标准句柄.该参数可以是以下值之一. 值 含义 STD_INPUT_HANDLE 标准输入的句柄 STD_OUTPUT_HANDLE 标准输出的句柄 STD_E

  • Go语言中的方法、接口和嵌入类型详解

    概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 1.编译器会因为我们同时有两个接口实现而报错吗? 2.如果编译器接受这样的定义,那么当接口调用时编译器要怎么确定该使用哪个实现? 在写了一些测试代码并认真深入的读了一下标准之后,我发现了一些有意思的东西,而且觉得很有必要分享出来,那么让我们先从 Go 语言中的方法开始说起. 方法 Go 语言中同时有函数和方法.一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的

  • 12 种使用Vue 的最佳做法

    作者:Matt Maribojoc 译者:前端小智 来源:medium 随着 VueJS 的使用越来越广泛,出现了几种最佳实践并逐渐成为标准.在本文中,主要分享在平时开发中一些有用资源和技巧,废话少说,我们开始吧. 1.始终在 v-for 中使用 :key 在需要操纵数据时,将key属性与v-for指令一起使用可以让程序保持恒定且可预测. 这是很有必要的,这样Vue就可以跟踪组件状态,并对不同的元素有一个常量引用.在使用动画或Vue转换时,key 非常有用. 如果没有key ,Vue只会尝试使D

  • SpringMVC JSON数据交互及RESTful支持实现方法

    JSON概述 JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,最近几年才流行起来.JSON是基于JavaScript的一个子集,使用了C.C++.C#.Java. JavaScript.Per. Python等其他语言的约定,采用完全独立于编程语言的文本格式来存储和表示数据.这些特性使JSON成为理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成. 与XML一样,JSON也是基于纯文本的数据格式.初学者可以使用JSON传输一个

  • Vue看了就会的8个小技巧

    1. 始终在 `v-for` 中使用 `:key` 在需要操纵数据时,将key属性与v-for指令一起使用可以让程序保持恒定且可预测是很有必要的.这样Vue就可以跟踪组件状态,并对不同的元素有一个常量引用.在使用动画或Vue转换时,如果没有key ,Vue只会尝试使DOM尽可能高效.这或许会导致v-for中的元素出现乱序,或行为难以预测.如果我们对每个元素都有唯一的键引用,就能更好地预测Vue应用程序将如何精确地处理DOM操作. 2. 使用驼峰式声明 props,并在模板中使用短横线命名来访问

  • C语言从零探索函数的知识

    目录 一.初探程序中的函数 二.深入浅出函数调用 三.函数定义细节剖析 四.函数参数深度剖析 五.编写函数对数组排序 六.变量的作用域与生命期(上) 七.变量的作用域与生命期(下) 八.函数专题练习 九.递归函数简介 一.初探程序中的函数 函数的概念 函数是具有特定功能的程序部件(可当黑盒使用) 函数有明确的使用方式(固定输入对应固定输出) 函数在程序中可重复使用(程序中的工具) 函数的类型 数据处理(数据→数据) 通过某种规则将 x处理成 y,如: y = 2x +1 过程定义(数据→功能)

随机推荐