• PSTR、LPSTR等宏原型


    1、首先介绍char、wchar_t ,宽字符wchar_t和窄字符char.

      窄字符char了,大家都很清楚,就是8bit表示的byte,长度固定。char字符只能表示ASII码表中的256个字符,包括前128个可见字符和后面的128个不可见字符。

      宽字符wchar_t是Unicode字符的数据类型,wchar_t 的 w, 表示 wide,后缀 t,表示 type。在很多平台上,wchar_t 定义为 typedef unsigned short wchar_t;传统的 char 大小为1个字节,可表示的字符数量很有限,为窄字符。wchar_t 通常大小为 2 字节(有些平台上可能为 4 字节),相对 char 来说,就为宽字符(wide character),wchar_t 大小足够表示 unicode 编码。

      在字符串前面加L,可以表示 wchar 字符串。比如const wchar_t* str = L"中国";

    2、各种宏定义

    typedef char CHAR;  
    typedef wchar_t WCHAR;  
    
    typedef CHAR* PCHAR,*PCH,*LPCH,*NPSTR,*PSTR,*LPSTR;  
    typedef  CONST CHAR* PCCH,*LPCCH,*PCSTR,*LPCSTR;  
    
    typedef WCHAR *PWCHAR,*NWPSTR,*PWCH,*LPWCH,*PWSTR,*LPWSTR;  
    typedef CONST WCHAR* PCWCH,*LPCWCH,PCWSTR,LPCWSTR;  
    
    typedef /* [string] */ WCHAR __RPC_FAR *LPWSTR;    
    typedef /* [string] */ TCHAR __RPC_FAR *LPTSTR;  
    
    typedef LPSTR LPTCH, PTCH;  
    typedef LPSTR PTSTR, LPTSTR;  
    typedef LPCSTR LPCTSTR;  

    为了统一成大写,C++给char,wchar_t,const 取了个大写别名。

    理解以上的命名规则就可以记住每种别名带表什么意思

    N:代表near,在16位系统中代表16位的段内地址

    L:代表long(far),在16位系统中代表16位的段地址+16位的偏移地址

    在32位系统中 N和L已经没有作用,只是为了向前兼容(兼容16位机器)才保留这些定义。

    P:代表指针

    C:代表CONST(const)

    W:代表WCHAR(wchar_t)

    T:代表宏_T(一个兼容的宏,当定义了UNICODE或者_UNICODE是表示WCHAR,否则表示char)

    CH:char的简写

    STR:string的简写

    明白了以上每个字母代表什么含义之后,只要知道排列顺序即可。正则表达式:[L/N][P][C][W/T][CH/STR]

    突然发现 typedef也没用过几次。。。

     原文博客:http://blog.csdn.net/w343051232/article/details/7083276

     参考问答:https://www.zhihu.com/question/27174874

  • 相关阅读:
    Linux 磁盘分区
    curl
    Metasploit ms10_046_shortcut_icon_dllloader 利用
    Ettercap 入门
    Ettercap dos_attack
    Centos7/Debian 配置双网卡
    Centos7配置单网卡,多IP
    Ettercap MITM Arp Poisoning
    Ettercap DNS Spoofing
    java常用设计模式--工厂模式简单例子
  • 原文地址:https://www.cnblogs.com/ThatsMyTiger/p/6826134.html
Copyright © 2020-2023  润新知