这种函数表示方法是什么意思,我从没看过这种表示方法啊?

yutongjun108 2006-11-05 08:21:42
static void start_init _P((struct proc *p, void *framep));

static void
start_init(p, framep)
struct proc *p;
void *framep;
{
vm_offset_t addr;
struct execve_args args;
int options, i, retval[2], error;
char **pathp, *path, *ucp, **uap, *arg0, *arg1;
.............
}
上面_P是什么意思啊?怎么在一个函数名后面加这个东西?谢谢

...全文
195 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
doudouHuY 2006-11-05
老式C函数定义风格
  • 打赏
  • 举报
回复
yutongjun108 2006-11-05
1 这是4.4BSD-Lite的内核源代码(关于TCP/IP部分的),应该是1993年左右的代码;

2 我搜索了一下整个工程,并没有定义_P宏;
但是这种函数定义的写法却相当的普遍,一大堆,不明白为什么这样写?

#define dead_abortop ((int (*) __P((struct vop_abortop_args *)))dead_badop)
#define dead_inactive ((int (*) __P((struct vop_inactive_args *)))nullop)
#define dead_reclaim ((int (*) __P((struct vop_reclaim_args *)))nullop)

int dead_lock __P((struct vop_lock_args *));
#define dead_unlock ((int (*) __P((struct vop_unlock_args *)))nullop)
int dead_bmap __P((struct vop_bmap_args *));
  • 打赏
  • 举报
回复
mu_yang 2006-11-05
这是老式的函数定义的写法
已经被逐步淘汰了
  • 打赏
  • 举报
回复
jiahu0215178 2006-11-05
差不多是一个宏
  • 打赏
  • 举报
回复
jixingzhong 2006-11-05
不曾见过这样的用法 ~~

楼主搜索一下你的代码所在的工程,
_P 是否是一个 宏 ? 或者其他的?
  • 打赏
  • 举报
回复
weishenm 2006-11-05
start_init(p, framep)
struct proc *p;
void *framep;

等于:
start_init(struct proc *p,void *framep)


  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2006-11-05 08:21
社区公告
暂无公告