常用的typedef 定义
今天开始学习VC++基础,系统编程栏目下都是WinAPI和MFC的内容,此为浏览博客园时学习的一篇文章,觉得很实用,拿来做笔记。
出处见最底部。
三行代码:
typedef char CHAR; typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR; typedef CONST CHAR *LPCCH,*PCCH,*LPCSTR,*PCSTR;1. 第一行:CHAR就是char类型,只是一个大写一个小写。2. 第二行:PCHAR是一个指向字符的char型指针,因为P就有指针的含义,而CHAR有字符的含义。3. 第二行:LPCH和PCH含义一样,都是指向字符的指针。那为什么第一个前面加L,这是历史遗留问题,以前分远指针(开头加L)和近指针(开头加N),现在指针都是四个字节,不分远近,加N和加L都一样,不要被L误导,当你看到LPCH时把它看成PCH就可以了。4. 第二行:同理NPSTR、LPSTR和PSTR都一样,都把它看成PSTR,表示指向字符串的指针。STR就是string的缩写。5. 第三行:LPCCH和PCCH与第二行LPCH和PCH相比多了一个C,为什么?你看定义是不是有一个CONST,表示这是常量指针,就是不能修改指针指向的内容,所以多了一个C。LPCCH和PCCH表示指向一个字符的常量指针。LPCSTR和PCSTR表示指向字符串的常量指针。接着看四行代码: typedef unsigned short wchar_t; typedef wchar_t WCHAR; typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR; typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;解释:1. 第二行:WCHAR实际就是unsigned short类型,W就是word的缩写,占两个字节。2. 第三行:PWCHAR、LPWCH、PWCH表示指向宽字符的unsigned short指针;LPWSTR和PWSTR表示指向字符串的unsigned short指针。3. 第三行:表示常量指针。最后看这七行代码: #indef UNICODE typedef unsigned short TCHAR,*PTCHAR,*PTCH,*LPTCH,*PTSTR,*LPTSTR; typedef const unsigned short *LPCTSTR; #else //ANSI typedef char TCHAR,*PTCHAR,*PTCH,*LPTCH,*PTSTR,*LPTSTR; typedef const char *LPCTSTR; #endif将二三行和五六行代码对比可知,除了类型由unsigned short变成 char其他都没变,其中每个都含有有一个T,表示通用,可以在ANSI和Unicode两个版本中来回切换使用而不用改代码。常用的typedef 定义的更多相关文章
- iOS - 常用的宏定义
1.处理NSLog事件(开发者模式打印,发布者模式不打印) 1 2 3 4 5 #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,& ...
- typedef定义函数类型或函数指针
转载请标明出处: 最近在看redis的代码,发现了有关函数指针的部分,想把它记下来. 在redis中有类似下面的定义,利用typedef 定义了一个新的类型,这种类型是一个函数: typedef vo ...
- iOS开发——常用宏的定义
有些时候,我们需要将代码简洁化,这样便于读代码.我们可以将一些不变的东东抽取出来,将变化的东西作为参数.定义为宏,这样在写的时候就简单多了. 下面例举了一些常用的宏定义和大家分享: 1. 判断设备的操 ...
- ios开发之常用宏的定义
有些时候,我们需要将代码简洁化,这样便于读代码.我们可以将一些不变的东东抽取出来,将变化的东西作为参数.定义为宏,这样在写的时候就简单多了. 下面例举了一些常用的宏定义和大家分享: 1. 判断设备的操 ...
- gojs常用API-画布定义
持续更新中 基础画布定义API画布初始位置 initialContentAlignment: go.Spot.Center,画布位置,定义后就不能拖动画布了,画布位置交由gojs管理 contentA ...
- 『转载』hadoop2.x常用端口、定义方法及默认端口
『转载』hadoop2.x常用端口.定义方法及默认端口 1.问题导读 DataNode的http服务的端口.ipc服务的端口分别是哪个? NameNode的http服务的端口.ipc服务的端口分别是哪 ...
- DELPHI-Delphi常用类型及定义单元
DELPHI-Delphi常用类型及定义单元 Type Unit Date SysUtils DeleteFile SysUtils or Windows (different versions) D ...
- [转载]Delphi常用类型及定义单元
原文地址:Delphi常用类型及定义单元作者:沧海一声笑 Delphi常用类型及定义单元-总结 sndplaysound mmsystem Type Unit Date ...
- typedef 定义结构体数组或其他数组
typedef 定义结构体数组或其他数组 C\C++语言下 typedef其实是对一个变量类型的名字进行重新定义,例如下面中: typedef struct { int num[10]; char n ...
- typedef定义数组
typedef定义数组 问题来源 在学习高一凡数据结构与算法解析串这一章节时,遇到如下代码不明白其意义,经过查阅终于搞明白 typedef unsigned char SString[MAXLEN + ...
随机推荐
- Azkaban 4.0.0 系列(一)-- Solo-Server
下载 链接 https://github.com/azkaban/azkaban/releases/4.0.0.tar.gz 解压 tar -xzvf 4.0.0.tar.gz -C 自定义目标目录 ...
- 混淆css类名
使用vite:
- javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]
今天尝试把一个SpringBoot项目由jdk11转移为jdk8,在IDEA里运行一切正常.打包,部署到tomcat启动后,在客户端调用WebSocket出现如下异常: java.lang.Illeg ...
- SqlServer查看所有表数据条数
select a.name as 表名, max(b.rows) as 记录条数 from sysobjects a ,sysindexes b where a.id=b.id and a.xtype ...
- Oracle 计划任务批量清理临时表实例
昨天发现近一段时间,公司某oracle库数据泵方式备份比之前慢了很多,备份集大小并未增长太多.查看了下发现该用户下存在几十万张表. 一.问题分析 1.查看用户下面的表 select count(*) ...
- TypeScript Number
TypeScript Number TypeScript 与 JavaScript 类似,支持 Number 对象. Number 对象是原始数值的包装对象. 语法 var num = new Num ...
- Windows server 2016 域服务1之创建域
谁知道以后会不会用到呢,总不能现学不是,写下来以后也许用的上. 本文为自己实验操作,工作环境是否与之相同本人并不清楚,步骤中详略参半,原理不会在这里说,因为我也不清楚. 1.首先安装域服务,选择添加角 ...
- 关于Easyui和JQuery版本兼容IE8问题记录
1.最后支持IE8及以下版本的是JQuery1.9 2.最后支持IE8及以下的Easyui是1.3.2,其对应的是JQuery1.8 因为低版本的Easyui,缺少某些方便好用的属性方法和样式不好看, ...
- Spring入门之IoC 的概念和作用(02)
2.1 程序的耦合和解耦 2.1.1 程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量.耦合的强弱取决于模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少.模块间的 ...
- Arduino开发ESP8266——安装与配置ESP8266开发板
一.安装Arduino 1.下载安装包:点击打开 2.安装:直接点击下一步直至安装完成.如下图所示: 二.下载ESP8266开发板库: 在这面填写ESP8266开发板地址:http://arduino ...