+ -
当前位置:首页 → 问答吧 → glibc 的 strcpy函数看不懂

glibc 的 strcpy函数看不懂

时间:2010-07-29

来源:互联网

本帖最后由 yylogo 于 2010-07-29 12:59 编辑

  最近想读glibc的函数,但是第一个strcpy就没看懂:
  1. /* Copy SRC to DEST.  */
  2. char *
  3. strcpy (dest, src)
  4.      char *dest;
  5.      const char *src;
  6. {
  7.   reg_char c;
  8.   char *__unbounded s = (char *__unbounded) CHECK_BOUNDS_LOW (src);
  9.   const ptrdiff_t off = CHECK_BOUNDS_LOW (dest) - s - 1;
  10.   size_t n;

  11.   do
  12.     {
  13.       c = *s++;
  14.       s[off] = c;
  15.     }
  16.   while (c != '\0');

  17.   n = s - src;
  18.   (void) CHECK_BOUNDS_HIGH (src + n);
  19.   (void) CHECK_BOUNDS_HIGH (dest + n);

  20.   return dest;
  21. }
  22. libc_hidden_builtin_def (strcpy)
复制代码
1.里面reg_char 是什么类型?register char ?
2.char *__unbounded s 这个是什么意思? __unbounded 这不知道.
3.CHECK_BOUNDS_LOW, 和CHECK_BOUNDS_HIGH 都是什么东西?

作者: yylogo   发布时间: 2010-07-29

宏定義。

作者: pandaiam   发布时间: 2010-07-29

http://www.cnblogs.com/egmkang/archive/2010/05/25/1743267.html
我看的这个libc虽然不是glic,但是原理都是一样的

作者: egmkang   发布时间: 2010-07-29

打車同問一下

自己寫的函數怎麼實現main的那種 argc argv形式的參數?
printf類的參數也行。

作者: pandaiam   发布时间: 2010-07-29

回复 egmkang


    额, 不是啊.. 我是在gnu.org里面下载的

作者: yylogo   发布时间: 2010-07-29

作者: yylogo   发布时间: 2010-07-29

回复 pandaiam


    main 貌似不是可变参数,main的那个参数是他的父进程设置好了的。

作者: yylogo   发布时间: 2010-07-29



QUOTE:
回复  egmkang


    额, 不是啊.. 我是在gnu.org里面下载的
yylogo 发表于 2010-07-29 12:41



有区别么?

作者: egmkang   发布时间: 2010-07-29

>> 1.里面reg_char 是什么类型?register char ?

/* 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

本帖最后由 ecjtubaowp 于 2010-07-29 13:56 编辑

回复 pandaiam


    实现printf这种参数最简单了啊,包含stdarg.h头文件就可以。

作者: ecjtubaowp   发布时间: 2010-07-29

回复 yylogo


    怎么记得我之前看的不是这样的呢,可能版本不一样。

作者: ecjtubaowp   发布时间: 2010-07-29

相关阅读 更多

热门下载

更多