glibc 的 strcpy函数看不懂
时间:2010-07-29
来源:互联网
最近想读glibc的函数,但是第一个strcpy就没看懂:
- /* Copy SRC to DEST. */
- char *
- strcpy (dest, src)
- char *dest;
- const char *src;
- {
- reg_char c;
- char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
- const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
- size_t n;
-
- do
- {
- c = *s++;
- s[off] = c;
- }
- while (c != '\0');
-
- n = s - src;
- (void) CHECK_BOUNDS_HIGH (src + n);
- (void) CHECK_BOUNDS_HIGH (dest + n);
-
- return dest;
- }
- libc_hidden_builtin_def (strcpy)
2.char *__unbounded s 这个是什么意思? __unbounded 这不知道.
3.CHECK_BOUNDS_LOW, 和CHECK_BOUNDS_HIGH 都是什么东西?
作者: yylogo 发布时间: 2010-07-29

作者: pandaiam 发布时间: 2010-07-29
我看的这个libc虽然不是glic,但是原理都是一样的
作者: egmkang 发布时间: 2010-07-29
自己寫的函數怎麼實現main的那種 argc argv形式的參數?
printf類的參數也行。

作者: pandaiam 发布时间: 2010-07-29
额, 不是啊.. 我是在gnu.org里面下载的
作者: yylogo 发布时间: 2010-07-29
作者: yylogo 发布时间: 2010-07-29
main 貌似不是可变参数,main的那个参数是他的父进程设置好了的。
作者: yylogo 发布时间: 2010-07-29
额, 不是啊.. 我是在gnu.org里面下载的
yylogo 发表于 2010-07-29 12:41
有区别么?
作者: egmkang 发布时间: 2010-07-29
/* Optimal type for storing bytes in registers. */
#define reg_char char
2.char *__unbounded s 这个是什么意思? __unbounded 这不知道.
估计是gcc的一个扩展
3.CHECK_BOUNDS_LOW, 和CHECK_BOUNDS_HIGH 都是什么东西?
在bp-checks.h中可找到这些宏的定义。
可能是在一些奇怪的体系结构上进行某些检查吧……
即使是i386, OS也会保留一部分地址空间, 这些空间对用户是不可用的; 指向它们的指针对用户来说也是无效的。
作者: OwnWaterloo 发布时间: 2010-07-29
回复 pandaiam
实现printf这种参数最简单了啊,包含stdarg.h头文件就可以。
作者: ecjtubaowp 发布时间: 2010-07-29
怎么记得我之前看的不是这样的呢,可能版本不一样。
作者: ecjtubaowp 发布时间: 2010-07-29
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28