不知道是从哪个版本的SDK开始,微软引入了一个新的类型——INT_PTR(其实也就是 typedef了一把)。看下面的定义就知道了。
- #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
#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理论上可以让代码具有更好的移植性,当然也让代码看起来更专业:)
分享到:
相关推荐
std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...
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分析 概要: shared_ptr是c++智能指针中适用场景多,功能实现较多的智能指针。... , _refCount(new int(1)) {} sharedptr(sharedptr<T>& sp) :_ptr(sp._ptr) , _refCount(sp._refCount) {
std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...
std::unique_ptr<int> p3(new int); 由此就创建出了⼀个 p3 智能指针,其指向的是可容纳 1 个整数的堆存储空间。 和可以⽤ make_shared() 模板函数初始化 shared_ptr 指针不同,C++11 标准中并没有为 unique_ptr ...
int_ptr ptr = &a; 4. 为函数指针定义别名: typedef void (*func_ptr)(int); func_ptr func; ... 使用 typedef 可以使代码更加清晰和可维护。当你阅读一段代码时,如果看到了一个 typedef 定义的别名,你可以更容易...
如: shared_ptr<int> sp1(new int(100)); //相当于 //int *sp1=new int(100); //auto sp1=make_shared<int>(100); 它与普通指针相⽐,最⼤的不同点就是shared_ptr是⼀个类,当对象⽣命周期结束时,会⾃动调⽤其析构...
shared_ptr(智能指针)举例 程序使⽤动态内存出于以下... 如 std::shared_ptr<int> p1 = std::make_shared<int>(66); ⼀般采⽤auto定义⼀个对象来保存make_shared的结果,如 auto p2 = std::make_shared<int>(88); 例
头⽂件是 memory: shared_ptr<int> p2 = make_shared<int>(42);//传递的参数必须能⽤来初始化⼀个in shared_ptr<string>p3 = make_shared(10,'9');//传递的参数必须与string的某个构造函数相匹配 shared_ptr<int>p4...
获取原始指针 std::shared_ptr<int> p4(new int(5)); int *pInt = p4.get(); 指定删除器 智能指针可以指定删除器,当智能指针的引⽤计数为0时,⾃动调⽤指定的删除器来释放内存。std::shared_ptr可以指定删除器的...
智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限。本文总结的8个问题足以涵盖auto_ptr的大部分内容。 ...
} 注意: 虽然本⽂简单介绍了auto_ptr。 但是不要⽤auto_ptr! 不要⽤auto_ptr! 虽然它是c++11以前的最原始的智能指针,但是在c++11中已经被弃⽤(使⽤的话会被警告)了。 它的替代品,也就是c++11新智能指针unique_...
也可以使⽤直接初始化的⽅式 shared_ptr<int> pint(new int(100)) 来创建⼀个 shared_ptr 并初始化,但是由于 shared_ptr 定义 的构造函数是 explicit 的,因此不能使⽤ shared_ptr<int> pint = new int(100) 来...
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_...
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 ==...
(1) 如何把显卡切换到图形模式: 调用 int 10h 中断 (2) 如何把坐标(x,y)转化成 13h 模式下的偏移地址 (3) 显卡内存中的一个字节表示一
分别是shared_ptr、weak_ptr和unique_ptr 智能指针的作⽤ 智能指针可以帮助我们管理动态分配的堆内存,减少内存泄漏的可能性 ⼿动管理堆内存有引起内存泄漏的可能,⽐如这段代码 try { int* p = new int; // Do ...
MFC 没有专门的API 用于实现文件夹的浏览,故现编制此类库, 实现function。 另外可对 function-->SHBrowseForFolder 做一定的了解
注意事项: (1) 其构造函数被声明为explicit,因此不能使⽤赋值运算符对其赋值,即不能使⽤类似这样的形式 auto_ptr<int> p = new int; (2) auto_ptr 的对象所有权是独占性的,使⽤拷贝构造和赋值操作符时,会造成...
(虽然我们本 篇要介绍的最基础的auto_ptr在C++11中已经被unique_ptr替代了。。) 智能指针的基本原理 智能指针其实是⼀个类,可以通过将普通指针作为参数传⼊智能指针的构造函数实现绑定。只不过通过运算符重载让它...