首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么像WEXITSTATUS(status)这样的宏是这样实现的?

为什么像WEXITSTATUS(status)这样的宏是这样实现的?
EN

Stack Overflow用户
提问于 2020-09-09 01:15:04
回答 1查看 337关注 0票数 0

我是C的新手,抱歉,如果我的问题是基本的,下面是让我困惑的代码:

wait.h.h

代码语言:javascript
复制
# define WEXITSTATUS(status)    __WEXITSTATUS (status)

warstatus.h

代码语言:javascript
复制
/* If WIFEXITED(STATUS), the low-order 8 bits of the status.  */
#define __WEXITSTATUS(status)   (((status) & 0xff00) >> 8)

我的问题是:

问题1-注释说(status) & 0xff00) >> 8检索低阶8位的状态。但是它看起来像是检索状态的中间8位(或第二位低阶8位)?

Q2-为什么有一个连接WEXITSTATUS(status)(((status) & 0xff00) >> 8)的中间宏(((status) & 0xff00) >> 8),为什么我们不能将wait.h中的所有内容作为:

代码语言:javascript
复制
# define WEXITSTATUS(status)   (((status) & 0xff00) >> 8)
EN

回答 1

Stack Overflow用户

发布于 2020-09-09 01:30:06

  1. 下面引用的等待手册页中提供了更多的解释。也就是说,注释并不是指传递到宏中的status,而是指来自所描述的位置的status

返回子程序的退出状态。这包括状态参数中最不重要的8位,这些子参数是在对exit(3)或_exit(2)的调用中指定的,或者作为main()中返回语句的参数。

  1. 原因可能是它允许在多个地方使用__WEXITSTATUS
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63803462

复制
相关文章

相似问题

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