- 浏览: 1476359 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
原文地址http://blog.163.com/james_huangjian/blog/static/178049345201261643452479/
eflag寄存器
http://www.cnblogs.com/shenlian/archive/2011/05/22/2053857.html
eflag寄存器
http://www.cnblogs.com/shenlian/archive/2011/05/22/2053857.html
intptr_t 其实不是指针类型 2012-07-16 16:34:52| 分类: C++ |字号 订阅 intptr_t 其实不是指针类型 分类: C语言 2012-04-23 17:26 336人阅读 评论(0) 收藏 举报 最近在看nginx源码,看到有一个类型intptr_t,没有见过,google了一下,有人说是指针类型,但是看nginx源码中对该类型变量的使用,好像不是指针类型。 [cpp] view plaincopy static ngx_int_t 667 ngx_get_options(int argc, char *const *argv) 668 { 669 u_char *p; 670 ngx_int_t i; 671 672 for (i = 1; i < argc; i++) { 673 674 p = (u_char *) argv[i]; 675 676 if (*p++ != '-') { 677 ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]); 678 return NGX_ERROR; 679 } 680 681 while (*p) { 682 683 switch (*p++) { 684 685 case '?': 686 case 'h': 687 ngx_show_version = 1; 688 ngx_show_help = 1; 689 break; 其中ngx_int_t的定义如下: [cpp] view plaincopy 78 typedef intptr_t ngx_int_t; 于是在linux的头文件中查找这个类型的定义,在/usr/include/stdint.h这个头文件中找到了这个类型的定义(不知道怎么在这里插入图片,所以使用文字): [cpp] view plaincopy 117 /* Types for `void *' pointers. */ 118 #if __WORDSIZE == 64 119 # ifndef __intptr_t_defined 120 typedef long int intptr_t; 121 # define __intptr_t_defined 122 # endif 123 typedef unsigned long int uintptr_t; 124 #else 125 # ifndef __intptr_t_defined 126 typedef int intptr_t; 127 # define __intptr_t_defined 128 # endif 129 typedef unsigned int uintptr_t; 130 #endif 很明显intptr_t不是指针类型,但是上边的一句注释(/* Types for `void *' pointers. */)让人很疑惑。既然不是指针类型,但是为什么说类型是为了“void *”指针? 又查了一下在《深入分析Linux内核源码》中找到了答案,原文描述如下: 尽管在混合不同数据类型时你必须小心, 有时有很好的理由这样做. 一种情况是因为内存存取, 与内核相关时是特殊的. 概念上, 尽管地址是指针, 内存管理常常使用一个无符号的整数类型更好地完成; 内核对待物理内存如同一个大数组, 并且内存地址只是一个数组索引. 进一步地, 一个指针容易解引用; 当直接处理内存存取时, 你几乎从不想以这种方式解引用
发表评论
-
xl2tp 备份
2019-09-24 16:25 6892019年9月24日更新: 注意,需要开启firewall ... -
sdl笔记
2019-01-31 17:19 732sdl教程教程 https://github.com/Twin ... -
tinyemu
2019-01-24 17:59 1432参考https://bellard.org/jslinux/t ... -
aws搭建xl2tp给iphone使用
2018-12-26 21:37 18902019年12月26日 可以参考原来的配置 https:// ... -
consul的基本使用
2017-06-27 11:13 1399### 安装 [centos7上consul的安装](ht ... -
lvs的helloworld
2017-06-13 20:36 596###################lvs######### ... -
系统调用的helloworld
2017-05-04 16:14 632《2.6内核标准教程》 p293 #include < ... -
bitcoin和cgminer的安装
2017-04-05 22:45 1958参考 http://blog.csdn.net/rion_ch ... -
ceph安装和常用命令
2017-03-21 21:55 953/etc/hosts ssh-keygen ssh-copy- ... -
mobile terminal 笔记
2016-12-02 15:35 624找出旧的iphone4 越狱之后可以变个小操作系统 mobi ... -
socket基础和select(python)
2016-06-14 17:21 1799上接 c语言的socket基础ht ... -
socket基础(c语言)
2016-06-14 16:45 994不使用select 普通的基础socket连接,对多个客户端的 ... -
ffmpeg+nginx 的直播(2,直播摄像头和麦克风)
2016-05-28 20:21 4357假设我的服务器是centos7 192.168.139.117 ... -
ffmpeg+nginx 的直播(1,直播播放的视频文件)
2016-05-26 17:11 659164位操作系统centos7 ############ 1.一 ... -
socat和netcat(nc)
2016-04-29 22:36 1742转 原文链接: http://www.wenquan.name ... -
neutron基础九(qemu nat网络)
2016-02-06 17:21 1621接上基础八,kvm透传nested忽略 1.在主机ce ... -
neutron基础八(qemu 桥接网络)
2016-02-06 13:13 1542qemu的桥接和nat的qemu启动命令是一样的,但是后续的脚 ... -
neutron基础七(qemu tap)
2016-02-02 17:02 1030使用qemu 建立个虚拟机 然后用tap设备, 根据基础六,t ... -
neutron基础六(bridge fdb)
2016-01-28 18:30 2263转发表 在三台机器上建立三个namespace 192.16 ... -
南北流量
2016-01-23 23:26 1822一、三层网络架构: 接入层:负责服务器的接入和隔离 汇聚层:汇 ...
相关推荐
intptr_t MsgQueue_PostMsg(msg_queue_t * pMsgQueue, const uint16_t msgId, const uintptr_t param); intptr_t MsgQueue_PostDelayedMsg(msg_queue_t * pMsgQueue, const uint16_t msgId, const uintptr_t param,...
intptr_t uintptr_t Integer type capable of holding a value converted from a void pointer and then be converted back to that type with a value that compares equal to the original pointer. Optional: ...
其中 ngx_int_t、ngx_flag_t 都映射为 intptr_t ;ngx_uint_t 映射为 uintptr_t 。这两个类型在 /usr/include/stdint.h 的定义为: /* Types for `void *' pointers. */ #if __WORDSIZE == 64 #ifndef __intptr_t_...
在C#中,`void*`表示一种泛型指针类型,而`IntPtr`则是一种安全的、类型安全的指针类型。在某些情况下,可以将`void*`转换为`IntPtr`以便于使用,但这通常发生在与非托管代码交互时。 2. **与Int32/Int64的关系:*...
这些类型包括准确长度类型(如intN_t)、最小长度类型(如int_leastN_t)、快速长度类型(如int_fastN_t)以及指针长度类型(如intptr_t)和最大长度类型(如intmax_t)。其中,N代表类型的宽度,通常有8、16、32、...
* intptr_t:整型指针 * uintptr_t:无符号整型指针 字符串数据类型 Nginx对C语言的字符串类型进行了简单的封装,core/ngx_string.h/c里面包含这些封装的内容。包括: * ngx_str_t:字符串类型,包含字符串长度和...
在处理整数与指针之间的转换时,推荐使用`intptr_t`类型。该类型在不同平台上具有不同的大小,但总是与平台的字长一致。例如,在64位平台上,`intptr_t`为8个字节;而在32位平台上,它为4个字节。 ```c #include ...
7. `intptr_t`, `uintptr_t`: 用于存储指针的整数类型,可以进行指针与整数之间的转换。 ### stdint.h 头文件 `stdint.h` 的作用与 `inttypes.h` 相似,它同样提供了固定宽度的整数类型定义。然而,`stdint.h` 更...
7. `intptr_t`, `uintptr_t`: 这些类型分别是有符号和无符号整数,它们至少能够表示任何指针类型的值。 使用这些类型的一个关键好处是,它们可以确保在不同架构(如32位和64位)上的一致性。例如,如果你需要一个...
public static libvlc_media_player_t Create_MediaPlayer(libvlc_instance_t libvlc_instance, IntPtr handle) { libvlc_media_player_t libvlc_media_player = IntPtr.Zero; try { if (libvlc_instance == ...
extern public static IntPtr libvlc_new(int argc, IntPtr argv); //创建播放器实例 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_player_...
3. `intptr_t`和`uintptr_t`:这两个类型分别是有符号和无符号整型,用于将指针转换为整数形式。它们确保了在进行指针到整数的转换时,能够正确地表示指针的全部地址空间。这些类型在需要将指针作为数值处理时非常...
extern public static IntPtr libvlc_new(int argc, IntPtr argv); //创建播放器实例 [DllImport("libvlc", CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr libvlc_media_player_...
例如,`inttypedefs.h` 可能会定义 `av_intptr_t` 或 `av_uintptr_t` 这样的类型,它们分别对应于有符号和无符号的指针宽度的整数。这些自定义类型在 FFmpeg 库内部使用,以保持一致性并方便代码维护。 总的来说,...
`intptr_t`和`uintptr_t`是C99标准提供的另外两种类型,它们分别代表有符号和无符号整型,其大小足以容纳任意指针的地址。这两个类型通常用于将指针转换为整数,以便进行位操作或者其他需要将指针视为数值的情况。...
在C#中调用Win32 API并处理指针类型的参数,可以通过多种方式实现,包括使用`IntPtr`来代替句柄,使用`ref`关键字来模拟函数参数指针,以及使用数组和编码转换来处理字符串指针。然而,所有这些方法都应遵循最佳实践...
同时,Linux内核也定义了一些特定的数据类型,例如intptr_t和uintptr_t,它们是能够保存指针值的整型变量。 在设备驱动程序中,通常使用确定大小的类型来定义数据结构,例如u8、u16、u32等。这些类型可以确保数据...
在C/C++编程语言中,`void`关键字及其关联的`void`指针类型是经常被提及但又常常被忽视的概念。初学者往往容易忽略`void`及其指针类型的重要性和用途,导致在实践中遇到不少困惑。事实上,只有深刻理解`void`指针的...
- `%zd`, `%zu`, `%zi` 等是用于格式化输出`size_t`, `uintptr_t`, `intptr_t`等类型的宏。 - `%hh`, `%h`, `%l`, `%ll`, `%j`, `%z`, `%t`, `%p` 等修饰符与对应的`printf`和`scanf`家族函数一起使用,确保正确...