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

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是什么意思啊?怎么在一个函数名后面加这个东西?谢谢

...全文
228 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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)


70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧