免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1916 | 回复: 2
打印 上一主题 下一主题

[函数] 请问一下FreeBSD的头文件中有关函数声明语句怎么理解? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-17 13:06 |只看该作者 |倒序浏览
例如,在/usr/include/sys/socket.h中有关函数声明语句如下:

int        accept  __P((int, struct sockaddr *, socklen_t *));
int        bind  __P((int, const struct sockaddr *, socklen_t));
int        connect  __P((int, const struct sockaddr *, socklen_t));

请问一下,其中的“__P”表示什么意思?为什么所有函数名后都有“__P”?
多谢!

论坛徽章:
0
2 [报告]
发表于 2003-11-17 13:57 |只看该作者

请问一下FreeBSD的头文件中有关函数声明语句怎么理解?

#if defined (__STDC__)  
#define __P(x) x
#else
#define __P(x) ()
#endif

That is,

If __STDC__ is defined (by compiler),
int accept __P((int, struct sockaddr *, socklen_t *));  means
int accept {int, struct sockaddr *, socklen_t *);

It is so-called the standard style of function decleration.  (ANSI)

Otherwise, say __STDC isn't defined.
int accept __P((int, struct sockaddr *, socklen_t *));  means
int accept ();

It is so-called the traditional style of function decleration.

论坛徽章:
0
3 [报告]
发表于 2003-11-17 17:53 |只看该作者

请问一下FreeBSD的头文件中有关函数声明语句怎么理解?

真是太感谢了,这几天我一直被这个问题困扰。
另外再问一下,
#if defined (__STDC__)
#define __P(x) x
#else
#define __P(x) ()
#endif
这些语句是在哪个文件中定义的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP