常用的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 + ...
随机推荐
- java hibernate +mysql demo
origin article:http://www.javatpoint.com/example-to-create-hibernate-application-in-eclipse-ide requ ...
- yii框架中 不能正确正常使用phpredis 路径安装好后还是报 Class yii\redis\Connection does not exist!
1,成功解决方案 在yiisoft / extensions.php 中添加如下数组 指向目录 'yiisoft/yii2-redis' =>array( 'name'=>'yi ...
- plsql和instantclient版本都对,依然不能初始化oci.dll解决办法
这里写到 "初始化错误,不能初始化 oci.dll, 请确认你安装的是64位的Oracle客户端 " ,这个描述还是非常的到位啊,我一检查,果然下载的客户端是32位的,在确保自己的 ...
- yolov4 编译
参考教程:https://blog.csdn.net/weixin_45102257/article/details/108872951 问题: --dataloader
batch_size:有多少张 shuffle=True:顺序不打乱 num_workers: 进程数 drop_last:最后不够64张是否舍去 import torchvision from to ...
- create-react-app卸载与升级
用create-react-app 创建项目发现报错 You are running `create-react-app` 4.0.3, which is behind the latest rele ...
- CCF 202012-1 期末预测之安全指数
#include <iostream> //#include <bits/stdc++.h> #include <string> using namespace s ...
- 第二课 如何安装java
1.三大版本 JDK: Java Development Kit JRE: Java Runtime Environment JVM: JAVA Virtual Machine 2.java开发环境搭 ...
- Linux 使用Postfix与Dovecot部署邮件系统
电子邮件系统 电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些. 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电 ...
- 用python判断三角形的形状
# coding:utf-8 class point: def __init__(self,x,y,name): self.x = x self.y = y self.name = name '''两 ...