`

INT_PTR介绍

    博客分类:
  • VC++
阅读更多

不知道是从哪个版本的SDK开始,微软引入了一个新的类型——INT_PTR(其实也就是 typedef了一把)。看下面的定义就知道了。

C++代码 复制代码
  1. #if defined(_WIN64)   
  2.     typedef __int64 INT_PTR, *PINT_PTR;   
  3.     typedef unsigned __int64 UINT_PTR, *PUINT_PTR;   
  4.   
  5.     typedef __int64 LONG_PTR, *PLONG_PTR;   
  6.     typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;   
  7.   
  8.     #define __int3264   __int64   
  9.   
  10. #else   
  11.     typedef _W64 int INT_PTR, *PINT_PTR;   
  12.     typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;   
  13.   
  14.     typedef _W64 long LONG_PTR, *PLONG_PTR;   
  15.     typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;   
  16.   
  17.     #define __int3264   __int32   
  18.   
  19. #endif   
  20. #endif // midl64  
#if defined(_WIN64)
    typedef __int64 INT_PTR, *PINT_PTR;
    typedef unsigned __int64 UINT_PTR, *PUINT_PTR;

    typedef __int64 LONG_PTR, *PLONG_PTR;
    typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;

    #define __int3264   __int64

#else
    typedef _W64 int INT_PTR, *PINT_PTR;
    typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;

    typedef _W64 long LONG_PTR, *PLONG_PTR;
    typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;

    #define __int3264   __int32

#endif
#endif // midl64



     众所周知,在32位操作系统里,一个int是4个字节。64位操作系统上,一个int是8个字节。指针的大小也是同样。所以用INT_PTR代替int理论上可以让代码具有更好的移植性,当然也让代码看起来更专业:)

分享到:
评论

相关推荐

    C++智能指针-unique-ptr智能指针详解.pdf

    std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...

    cape-fxx.rar_1c60deac5d48_dcfxx_fxxee_out_tof_cape beagle

    int ioctrl_unmap(uint32_t *addr_ptr, size_t block_len) int ioctrl_set(uint8_t mode) GPIO fuctions: int gpio_init(void) int gpio_cleanup(void) int gpio_set_input_mode(void) int gpio_set_output_...

    C++智能指针shared_ptr分析

    C++智能指针shared_ptr分析 概要: shared_ptr是c++智能指针中适用场景多,功能实现较多的智能指针。... , _refCount(new int(1)) {} sharedptr(sharedptr<T>& sp) :_ptr(sp._ptr) , _refCount(sp._refCount) {

    C++11unique-ptr智能指针详解.pdf

    std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...

    C++11unique-ptr智能指针详解(1).pdf

    std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...

    C语言初识常见关键字-typedef重定义

    int_ptr ptr = &a; 4. 为函数指针定义别名: typedef void (*func_ptr)(int); func_ptr func; ... 使用 typedef 可以使代码更加清晰和可维护。当你阅读一段代码时,如果看到了一个 typedef 定义的别名,你可以更容易...

    C++智能指针:shared-ptr用法详解.pdf

    如: shared_ptr<int> sp1(new int(100)); //相当于 //int *sp1=new int(100); //auto sp1=make_shared<int>(100); 它与普通指针相⽐,最⼤的不同点就是shared_ptr是⼀个类,当对象⽣命周期结束时,会⾃动调⽤其析构...

    shared-ptr(智能指针)举例.pdf

    shared_ptr(智能指针)举例 程序使⽤动态内存出于以下... 如 std::shared_ptr<int> p1 = std::make_shared<int>(66); ⼀般采⽤auto定义⼀个对象来保存make_shared的结果,如 auto p2 = std::make_shared<int>(88); 例

    智能指针shared-ptr的初始化.pdf

    头⽂件是 memory: shared_ptr<int> p2 = make_shared<int>(42);//传递的参数必须能⽤来初始化⼀个in shared_ptr<string>p3 = make_shared(10,'9');//传递的参数必须与string的某个构造函数相匹配 shared_ptr<int>p4...

    智能指针shared-ptr的用法.pdf

    获取原始指针 std::shared_ptr<int> p4(new int(5)); int *pInt = p4.get(); 指定删除器 智能指针可以指定删除器,当智能指针的引⽤计数为0时,⾃动调⽤指定的删除器来释放内存。std::shared_ptr可以指定删除器的...

    C++中的auto_ptr智能指针的作用及使用方法详解

    智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限。本文总结的8个问题足以涵盖auto_ptr的大部分内容。  ...

    C++智能指针详解(1).pdf

    } 注意: 虽然本⽂简单介绍了auto_ptr。 但是不要⽤auto_ptr! 不要⽤auto_ptr! 虽然它是c++11以前的最原始的智能指针,但是在c++11中已经被弃⽤(使⽤的话会被警告)了。 它的替代品,也就是c++11新智能指针unique_...

    C++智能指针.pdf

    也可以使⽤直接初始化的⽅式 shared_ptr<int> pint(new int(100)) 来创建⼀个 shared_ptr 并初始化,但是由于 shared_ptr 定义 的构造函数是 explicit 的,因此不能使⽤ shared_ptr<int> pint = new int(100) 来...

    md5加密解密 string Md5Encode::Encode

    int total_byte = FillData(src_data, strlen(src_data), &out_data_ptr); char * data_BIT_OF_GROUP = out_data_ptr; for (int i = 0; i < total_byte / (BIT_OF_GROUP / BIT_OF_BYTE); ++i) { data_BIT_OF_...

    c语言文件读写操作代码.docx

    int main() { FILE *file_ptr; // File pointer char filename[] = "example.txt"; // Name of the file // Writing to a file file_ptr = fopen(filename, "w"); // Open file in write mode if (file_ptr ==...

    06_ptr_assume_图形模式编程1

    (1) 如何把显卡切换到图形模式: 调用 int 10h 中断 (2) 如何把坐标(x,y)转化成 13h 模式下的偏移地址 (3) 显卡内存中的一个字节表示一

    C++智能指针循环引用问题分析.pdf

    分别是shared_ptr、weak_ptr和unique_ptr 智能指针的作⽤ 智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性 ⼿动管理堆内存有引起内存泄漏的可能,⽐如这段代码 try { int* p = new int; // Do ...

    MFC 实现文件夹的浏览

    MFC 没有专门的API 用于实现文件夹的浏览,故现编制此类库, 实现function。 另外可对 function-->SHBrowseForFolder 做一定的了解

    C++智能指针的原理和实现.pdf

    注意事项: (1) 其构造函数被声明为explicit,因此不能使⽤赋值运算符对其赋值,即不能使⽤类似这样的形式 auto_ptr<int> p = new int; (2) auto_ptr 的对象所有权是独占性的,使⽤拷贝构造和赋值操作符时,会造成...

    C++智能指针:auto-ptr详解.pdf

    (虽然我们本 篇要介绍的最基础的auto_ptr在C++11中已经被unique_ptr替代了。。) 智能指针的基本原理 智能指针其实是⼀个类,可以通过将普通指针作为参数传⼊智能指针的构造函数实现绑定。只不过通过运算符重载让它...

Global site tag (gtag.js) - Google Analytics