WEB开发网
开发学院网络安全黑客技术 如何阅读源代码(2) 阅读

如何阅读源代码(2)

 2006-07-04 20:27:44 来源:WEB开发网   
核心提示: 注意,这些都是extern的,如何阅读源代码(2)(3),也就是说,可以在其他地方见到它们的调用(有点相当于C++中的public函数),这是为了调试或者使用者详细了解程序情况来用的,不是重要内容,再来看看linklist.c,NLISTPTR new_nlist(char *); /*

注意,这些都是extern的,也就是说,可以在其他地方见到它们的调用(有点相当于C++中的public函数)。再来看看linklist.c,
NLISTPTR new_nlist(char *); /* new list node */
void del_nlist(NLISTPTR *); /* del list */
GLISTPTR new_glist(char *, char *); /* new group list node */
void del_glist(GLISTPTR *); /* del group list */
int isinstr(char *, char *);

这5个函数是内部使用的(相当于C++中的private), 也就是说,这些函数只被isinlist(NLISTPTR, char *), isinglist(GLISTPTR, char *), add_nlist(char *, NLISTPTR *), add_glist(char *, GLISTPTR *)调用,而不会出现在其他地方。所以,我们先来看这几个内部函数。举例来说,
add_nlist(char *)
NLISTPTR new_nlist(char *str)
{
  NLISTPTR newptr;
if (sizeof(newptr->string) < strlen(str))
  {
  if (verbose)
  fprintf(stderr,"[new_nlist] %s ",msg_big_one);
  }
  if (( newptr = malloc(sizeof(struct nlist))) != NULL)
  {strncpy(newptr->string, str, sizeof(newptr->string));newptr->next=NULL;}
  return newptr;
}

这个函数分配了一个struct nlist, 并且把其中的string赋值为str, next赋值为NULL.这实际上是创建了链表中的一个节点。verbose是一个全局变量,定义了输出信息的类型,如果verbose为1,则输出很详细的信息,否则输出简略信息。这是为了调试或者使用者详细了解程序情况来用的。不是重要内容,虽然我们常常可以在这个源程序的其他地方看到它。另外一个函数:
void del_nlist(NLISTPTR *list)
{
  NLISTPTR cptr,nptr;
cptr=*list;
  while (cptr!=NULL)
  {
  nptr=cptr->next;
  free(cptr);
  cptr=nptr;
  }
}

上一页  1 2 3 4 5  下一页

Tags:如何 阅读 源代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接