inet_ntoa之坑------再谈不可重入函数中的static
来源:互联网 发布:药品销售人员软件 编辑:程序博客网 时间:2024/06/05 22:36
不想用过多的话语来啰嗦, 还是看代码吧(如下结果非常让人吃惊):
#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>int main(){ unsigned long n1 = inet_addr("10.213.120.1");unsigned long n2 = inet_addr("172.18.18.1");struct in_addr stAddr1, stAddr2;stAddr1.s_addr = n1;stAddr2.s_addr = n2;printf("%lu\n", n1); printf("%lu\n", n2); char *p1 = inet_ntoa(stAddr1);char *p2 = inet_ntoa(stAddr2); printf("%s\n", p1); printf("%s\n", p2); return 0;}结果:
taoge@localhost Desktop> g++ test.cpp
taoge@localhost Desktop> ./a.out
24696074
17961644
172.18.18.1
172.18.18.1
为什么是相同的ip呢? 因为在inet_ntoa中static定义, 那为什么知道有static定义呢? 看看inet_ntoa的原型就基本明白了:char *inet_ntoa(struct in_addr in); 要返回char *, 而入参没有char *, 那几乎就是要用static了啊, 看了一下inet_ntoa的实现, 果然如此。
static引起的不可重入问题, 我们已经讨论过了, 便不过多聊。
总之, 不可重入函数就是坑, inet_ntoa便是其中之一。
0 0
- inet_ntoa之坑------再谈不可重入函数中的static
- 不可重入函数
- 不可重入函数
- 重入与不可重入函数
- Linux中的可重入函数和不可重入函数
- Linux中的可重入函数和不可重入函数
- C语言之可重入函数 && 不可重入函数
- C语言之可重入函数 && 不可重入函数
- C语言之可重入函数 && 不可重入函数
- 不可重入的函数
- 不可重入函数总结
- 不可重入函数测试
- 信号捕捉预处理之不可重入函数
- 可重入函数与不可重入函数
- 可重入函数与不可重入函数
- 可重入函数与不可重入函数
- 可重入函数 和 不可重入函数
- 可重入函数与不可重入函数
- java反射机制
- UVA - 12186 Another Crisis 水树形dp
- JavaScript编写人机对战五子棋(六)
- View 的位置参数
- 进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
- inet_ntoa之坑------再谈不可重入函数中的static
- 设置web页面favicon设置问题
- 在Eclipse中,使用v7-recyclerview问题
- kaili aircrack-ng remark
- 机器学习(四)--- 从gbdt到xgboost
- 初识java
- 最新前端开发工程师面试题——CSS部分
- 10个随机数的和
- Android选择器类库,包括日期时间选择器、单项选择器、地址选择器、颜色选择器、文件目录选择器、数字选择器、星座选择器等