`

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理论上可以让代码具有更好的移植性,当然也让代码看起来更专业:)

分享到:
评论

相关推荐

    test_share_ptr

    std::shared_ptr<int> ptr2 = std::make_shared<int>(5); // 使用make_shared ``` 2. 共享:多个`std::shared_ptr`可以共享同一对象,它们都拥有对对象的所有权。 ```cpp std::shared_ptr<int> ptr3(ptr); // 复制...

    auto_ptr指针介绍(智能指针).

    ### Auto_ptr 智能指针介绍 在C++中,`auto_ptr`是一种智能指针,它通过在对象的生命周期内自动管理所指向的对象内存,来帮助开发者避免内存泄漏和其他资源管理问题。`auto_ptr`是C++标准库的一部分,并在C++11之前...

    C++11新特性之智能指针(shared_ptr/unique_ptr/weak_ptr)

    void process(shared_ptr<int> ptr) { cout << "in process use_count:" << ptr.use_count() ; } ``` 调用`reset`方法可以改变`shared_ptr`所指向的对象,旧对象的引用计数会减1,如果减至0则会被释放: ```cpp ...

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

    std::unique_ptr<int> p4(new int); std::unique_ptr<int> p5(p4); // 错误,不能拷贝 std::unique_ptr<int> p5(std::move(p4)); // 正确,通过移动构造函数转移所有权 ``` 2. **自动释放**:`unique_ptr`在...

    一个最小的sharedunique_ptr实现来处理booststdsharedunique_ptr不可用的情况。.zip

    通常是一个原子整数(如`std::atomic<int>`),确保在多线程环境下的安全性。 2. **删除器(Deleter)**:`unique_ptr`和`shared_ptr`都需要知道如何删除它们所拥有的对象。`unique_ptr`的删除器通常在构造函数中...

    shared_ptr只能对new的内存操作

    boost::shared_ptr<int> pi(px); *pi = 6; system("pause"); return 0; } ``` 在这个例子中,首先使用`new`操作符动态分配了一个`int`类型的对象,并将其值初始化为3。然后创建了一个`boost::shared_ptr`对象`...

    C++11智能指针中的 unique_ptr实例详解

    unique_ptr<int> pInt(new int(5)); ``` 这将创建一个unique_ptr实例,它管理着一个整型对象,初始值为5。 2. 禁止复制与赋值 unique_ptr不支持复制构造函数和赋值操作,这是为了保证对象的所有权是唯一的。试图...

    c++的智能指针Auto_PTR的细致而经典的分析

    通过本篇文章的介绍,我们深入了解了 C++ 中 `auto_ptr` 的基本概念和实现细节。虽然 `auto_ptr` 已经逐渐被更现代的智能指针类型所取代,但它依然是学习智能指针基础的重要起点。希望读者能够在实践中合理选择并...

    C++11 std::shared_ptr总结与使用示例代码详解

    int main(){ std::shared_ptr<Test> p = std::make_shared(); std::cout () = " () , p.use_count() = " << p.use_count() ; std::thread t1(thr, p), t2(thr, p), t3(thr, p); std::cout () = " () , p...

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

    auto_ptr<map<int, vector<int>>> ptr(new map<int, vector<int>>()); ``` 你也可以先声明`auto_ptr`,然后再为其分配内存: ```cpp auto_ptr<map<int, int>> ptr; ptr = auto_ptr<map<int, int>>(new map<int, int>...

    C++11智能指针之weak_ptr详解

    shared_ptr<int> sp(new int(5)); weak_ptr<int> wp(sp); ``` 在这个例子中,`wp`被初始化为指向`sp`所管理的对象,但`sp`的引用计数并未增加。 3.2 检查`weak_ptr`的有效性 由于`weak_ptr`不控制对象的生命周期...

    C++智能指针shared_ptr分析

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

    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++11 智能指针之shared_ptr代码详解

    shared_ptr<int> sp = make_shared<int>(42); ``` 在不使用make_shared的情况下,也可以直接使用new操作符来创建对象,并将原始指针传递给shared_ptr的构造函数: ```cpp shared_ptr<int> sp(new int(42)); ``` ...

    func_ptr.rar_函数指针

    这里的`*`表示这是一个指针,`func_ptr`是变量名,`(int, int)`是函数接受的参数列表,`int`是函数的返回类型。现在我们可以声明一个函数指针变量,并将其指向`add`函数: ```cpp func_ptr = &add; ``` 然后,通过...

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

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

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

    std::unique_ptr<int, myDel> p6(new int); ``` unique_ptr提供了几个重要的成员方法: - `operator*()`:解引用操作,返回指向数据的引用。 - `operator->()`:访问指针所指向的对象的成员,类似原始指针的`->`...

Global site tag (gtag.js) - Google Analytics