VC 常用数据类型_lie to me的博客-程序员秘密

技术标签: VC程序设计  VC  

类型名 作用
HANDLE 句柄
WINAPI 一个宏 替换的是: __stdcall
LPVOID 没有类型的指针
DWORD Double Word 注册表键值
wchar_t 宽字符 Unicode编码也是存在这里面但是不能代表这是Unicode的存储类型 可以使用TEXT() 将char转为wchar_t
   

常用VC数据类型。

持续更新

数据类型对比

#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY __stdcall
#define CALLBACK __stdcall
#define APIPRIVATE __stdcall

几个关键字的对比
__stdcall、__cdecl和__fastcall是三种函数调用协议,函数调用协议会影响函数参数的入栈方式、栈内数据的清除方式、编译器函数名的修饰规则等。

调用协议常用场合
__stdcall:Windows API默认的函数调用协议。
__cdecl:C/C++默认的函数调用协议。
__fastcall:适用于对性能要求较高的场合。
函数参数入栈方式
__stdcall:函数参数由右向左入栈。
__cdecl:函数参数由右向左入栈。
__fastcall:从左开始不大于4字节的参数放入CPU的ECX和EDX寄存器,其余参数从右向左入栈。
问题一:__fastcall在寄存器中放入不大于4字节的参数,故性能较高,适用于需要高性能的场合。
栈内数据清除方式
__stdcall:函数调用结束后由被调用函数清除栈内数据。
__cdecl:函数调用结束后由函数调用者清除栈内数据。
__fastcall:函数调用结束后由被调用函数清除栈内数据。
问题一:不同编译器设定的栈结构不尽相同,跨开发平台时由函数调用者清除栈内数据不可行。
问题二:某些函数的参数是可变的,如printf函数,这样的函数只能由函数调用者清除栈内数据。
问题三:由调用者清除栈内数据时,每次调用都包含清除栈内数据的代码,故可执行文件较大。
C语言编译器函数名称修饰规则
__stdcall:编译后,函数名被修饰为“[email protected]”。
__cdecl:编译后,函数名被修饰为“_functionname”。
__fastcall:编译后,函数名给修饰为“@[email protected]”。
注:“functionname”为函数名,“number”为参数字节数。
注:函数实现和函数定义时如果使用了不同的函数调用协议,则无法实现函数调用。
C++语言编译器函数名称修饰规则
__stdcall:编译后,函数名被修饰为“[email protected]@YG******@Z”。
__cdecl:编译后,函数名被修饰为“[email protected]@YA******@Z”。
__fastcall:编译后,函数名被修饰为“[email protected]@YI******@Z”。
注:“******”为函数返回值类型和参数类型表。
注:函数实现和函数定义时如果使用了不同的函数调用协议,则无法实现函数调用。
C语言和C++语言间如果不进行特殊处理,也无法实现函数的互相调用。

(转摘)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42193704/article/details/102593203

智能推荐

《MOTS: Multi-Object Tracking and Segmentation》简述_kitti mots_optimistic丶中的博客-程序员秘密

引言  Bounding box级跟踪性能已经达到饱和,只有在移动到像素级别时才能进一步改进。因此,本文建议将检测、分割和跟踪视为需要一起考虑的相互关联的问题。用于训练和评估目标分割模型的数据集通常不提供关于视频数据的标注,甚至不提供关于不同图像中对象身份的信息。另一方面,多目标跟踪的常用数据集仅提供对象的边界框注释。这些可能太过于粗糙,例如,当物体被部分遮挡时,它们的边界框包含来自其他物体的更多信息而不是自身,如图1所示:  因此本文做出如下贡献:  (1) 基于流行的KITTI和MOTChall

数据结构 第六章 树和二叉树_lero1005的博客-程序员秘密

目录6.1 树的定义树的定义逻辑特点基本术语6.2 二叉树的定义二叉树基本特点树和二叉树的抽象数据类型定义二叉树的顺序存储二叉树的链式存储6.3 遍历二叉树和线索二叉树先序遍历中序遍历后序遍历层序遍历求高度求结点总数求叶子结点总数先序输出叶子结点计算给定二叉树T的宽度。二叉树的宽度是指各层结点数的最大值。线索化二叉树...

QtCreator中DLL的创建和使用(权威指南,经验证):基类非QObject的类_noodle123的博客-程序员秘密

运行环境QtCreator4.2.1, SDK 4.8.1原因在制作的过程中费劲周折,最终虽然简单,但是感觉过程并不顺利。主要原因:        A、一方面个人悟性一般;        B、一方面感觉帮助文档上关于这动态库创建、使用方面的描述过于笼统,        C、一方面网络文章纷纷扰扰,        D、最后就是没有查看例子或者源代码。

springDataSolr的使用示例,crud操作,分页查询的操作_U盘data的博客-程序员秘密

pring Data Solr:这是一个spring组织生产的一个操作solr的工具, 底层使用的是solrJ. 使用它可以将solrj那种原有的面向命令的操作改为面向对象的操作, Java程序员使用起来更容易理解, 方便.spring Data Solr里面的Criteria对象中的方法, is和contains的区别:contains: 是相当于数据库中like模糊查询的方式, 将查...

SAP License:FI常用表_sap f_lfa1_app 供应商权限_SAP权限管控的博客-程序员秘密

GL部分:FAGLFLEXT(FMGLFLEXT) 新总账汇总表GLT0 旧总帐汇总表SKA1 总账科目主记录 (科目表) 科目表层数据SKAT 总帐科目主记录(科目表:说明) 包括语言代码SKB1 总帐科目主记录 (公司代码) 公司代码层数据BKPF 财务凭证抬头BSEG 财务凭证行项目BSIK, B.

StandardWrapper.Throwable_dsef3的博客-程序员秘密

2010-3-11 11:53:27 org.apache.catalina.core.ApplicationContext log严重: StandardWrapper.Throwableorg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'localSessionFacto...

随便推点

android基础学习之相机拍照部分_程序员keven的博客-程序员秘密

在学习这个模块之前必须要对android有关于相机拍照的API有所了解 , 这个模块的API有两部分 一部分就是Camera 还有一部分 是Camera2 好像androidX包里面还有一个CameraX , 但是 我们只能从最简单的来 就看android Camera包吧 我们线了解了解它的结构由于API较多 我们这里就不做多的介绍 可以查看官网 :android.hardware | Android Developershttps://developer.android...

阿里2020首发一百多道Java高级岗面试题(含答案)_架构大数据双料架构师的博客-程序员秘密

整理的136道阿里的Java面试题,都来挑战一下,看看自己有多厉害。下面题目都带超详细的解答,详情见底部。java基础Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何调优 线程池的最大线程数目根据什么确定 动态代理的几种方式 HashMap的并发问题 了解LinkedHashMap的应用吗 反射的原理,反射创建类实例的三种方式是什么? clon

linux驱动虚拟总线platform_driver和platform_driver(LED驱动)_qq_40215005的博客-程序员秘密

VID & PID每一个设备都有一个设备id和厂商id,设备管理器–>硬件属性–>详细信息–>属性–>硬件id,驱动和设备分离从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform...

事件详解(事件委托)_事件委托详解_qq_45783949的博客-程序员秘密

事件委托一、点击标签 显示文本内容二、利用JS追加标签三、事件委托**事件委托机制:利用事件冒泡的原理,把本应添加给某个元素上的事件委托给它的父级**一、点击标签 显示文本内容<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> li{ margin

Detours -- Hook API (MessageBoxW)_jiangqin115的博客-程序员秘密

Detours是微软开发的一个函数库,可用于捕获系统API。准备工作在用其进行程序开发之前,得做一些准备工作。一.下载Detours  在微软官网上可免费下载Detours[1] 二.安装Detours  一路NEXT  三.生成Detours库  在安装后的文件夹下找不到直接可以拿来用的LIB文件,但是却有SRC文件(在**\Microsoft

Error from server (Forbidden): Forbidden (user=system:anonymous...)_ljx1528的博客-程序员秘密

1、报错信息如下:Error from server (Forbidden): Forbidden (user=system:anonymous, verb=get, resource=nodes, subresource=proxy)2、解决办法绑定一个cluster-admin的权限kubectl create clusterrolebinding system:anonymous ...