首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BSD套接字头

BSD套接字头
EN

Stack Overflow用户
提问于 2020-11-30 02:55:41
回答 1查看 69关注 0票数 1

带有“__P”的Socket.hBSP头

int绑定__P(int,const *,socklen_t)

你能告诉我“__P”在这里是什么意思吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-30 03:49:29

这是一个便携的黑客。K&R C( ANSI和ISO标准化之前的版本)没有在括号中声明带有类型和命名参数的函数。因此,这一声明必须是关于K&R C的:

代码语言:javascript
复制
int bind();

在标准C上:

代码语言:javascript
复制
int bind(int, const struct sockaddr *, socklen_t);

__P宏旨在掩盖这些差异,并允许编译器根据指定标准C的__STDC__宏的存在来生成适当的原型。

请注意,C是由ANSI在1989年和ISO在1990年标准化,并经历了几次修订,从那时起,最显著的是在1999年和2011年。不太可能有人仍然在现代系统上使用K&R C编译器,因为对于许多体系结构来说,他们在操作系统中的支持只出现在支持标准C的编译器中。而且,大多数人都在使用在过去30年中升级或构建的系统。

然而,一些非常老的软件可能是用K&R C编写的,因此,这种技术允许这样的代码工作。然而,这种代码的生命周期是有限的,因为最新版本的GCC和clang不再支持K&R C,所以找到一个旧编译器可能很棘手。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65067564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档