uintptr_t和intptr_t类型究竟有何不同?
- 内容介绍
- 文章标签
- 相关推荐
本文共计883个文字,预计阅读时间需要4分钟。
简介:最近在阅读代码时,发现了两个之前未见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 标准定义的,具体代码在 Linux 平台的 /usr/include/stdint.h 头文件中。
* Types for `void *p`
简介最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。
/* Types for `void *' pointers. */
#if __WORDSIZE == 64
# ifndef __intptr_t_defined
typedef long int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned long int uintptr_t;
#else
# ifndef __intptr_t_defined
typedef int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned int uintptr_t;
#endif
为什么会根据不同的位数定义不同的长度呢?
先看下不同的数据类型在不同字长机器上长度大小。
本文共计883个文字,预计阅读时间需要4分钟。
简介:最近在阅读代码时,发现了两个之前未见过的数据类型:intptr_t 和 uintptr_t。这两个类型是 ISO C99 标准定义的,具体代码在 Linux 平台的 /usr/include/stdint.h 头文件中。
* Types for `void *p`
简介最近在看代码时,发现了两个之前没见过的数据类型:intptr_t,uintptr_t。这两个数据类型是ISO C99定义的,具体代码在linux平台的/usr/include/stdint.h头文件中。
/* Types for `void *' pointers. */
#if __WORDSIZE == 64
# ifndef __intptr_t_defined
typedef long int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned long int uintptr_t;
#else
# ifndef __intptr_t_defined
typedef int intptr_t;
# define __intptr_t_defined
# endif
typedef unsigned int uintptr_t;
#endif
为什么会根据不同的位数定义不同的长度呢?
先看下不同的数据类型在不同字长机器上长度大小。

