LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1069|回复: 3

前导“__”函数名的用意

[复制链接]
发表于 2007-10-22 14:36:55 | 显示全部楼层 |阅读模式
看内核代码,包括一些其他的代码,经常能看到前导“__”的函数命名方法,比如,内核提供的双向循环列表,定义在include/linux/list.h里就有这样的定义:

  1. static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next)
  2. {
  3.         next->prev = new;
  4.         new->next = next;
  5.         new->prev = prev;
  6.         prev->next = new;
  7. }
复制代码


之后又封装了一层没有前导"__"的

  1. static inline void list_add(struct list_head *new, struct list_head *head)
  2. {
  3.         __list_add(new, head, head->next);
  4. }
复制代码


我想请问这除了是更好的封装意外有什么别的意思吗?
为什么要用前导“__”的函数命名法,有什么规则吗?谢谢。
发表于 2007-10-22 17:59:00 | 显示全部楼层
“__”是告诉程序员在调用这种函数时要小心,要知道自己在做什么。
这个和C的哲学有关,C++里认为是内部的函数就用protect保护了,外面的人更本不能碰,C是不同的,程序员有最大的自由,可以调用一些被认为是内部的函数。由于__函数导致的一切后果程序员都应该预料到并且处理好。
"__"应该只是一个警告,警告程序员这个函数请弄清楚后再调用。 也是表明这是一个内部函数。
回复 支持 反对

使用道具 举报

发表于 2007-10-22 18:09:06 | 显示全部楼层
Post by wsw
“__”是告诉程序员在调用这种函数时要小心,要知道自己在做什么。
这个和C的哲学有关,C++里认为是内部的函数就用protect保护了,外面的人更本不能碰,C是不同的,程序员有最大的自由,可以调用一些被认为是内部的函数。由于__函数导致的一切后果程序员都应该预料到并且处理好。
"__"应该只是一个警告,警告程序员这个函数请弄清楚后再调用。 也是表明这是一个内部函数。


正解, 呃,回复还要多于6个字符才行....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-25 18:17:07 | 显示全部楼层
明白了,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表