C++ 宏中的语句

2023-11-29

阅读 chromium 代码,发现有助于处理 POSIX 兼容系统上系统调用的 EINTR errno 的宏。 这是代码(base/posix/eintr_wrapper.h):

#define HANDLE_EINTR(x) ({ \
  decltype(x) eintr_wrapper_result; \
  do { \
    eintr_wrapper_result = (x); \
  } while (eintr_wrapper_result == -1 && errno == EINTR); \
  eintr_wrapper_result; \
})

问题是宏中最后一条语句的作用是什么eintr_wrapper_result;? 如果我们使用逗号而不是分号 - 就会很清楚 - 返回最后一个操作(逗号运算符)的结果。但在这种情况下,目的是什么?


该宏使用语句表达式海湾合作委员会扩展。内部块中的最后一个表达式在执行后将用作整体的值,就像逗号运算符一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 宏中的语句 的相关文章

随机推荐

  • 将可调用线程设为守护进程

    如何将 Callable 线程设置为守护线程 这就是我正在尝试的 我正在尝试执行一组线程 其中一个线程未完成并进入无限循环 它的作用是即使所有代码语句都被执行 程序的主线程也不会终止 之后主线程进入挂起模式 这是相同的代码片段 public
  • 使用 Swift 以编程方式在 Mapkit 中倾斜地图

    我想在启动时倾斜地图 与用户用两根手指向上或向下滚动时的操作相同 使用 Swift 可以做到这一点吗 MKMapView 类参考 http goo gl djHXPn 看着那 这camera财产 相机对象定义了地图表面上方的一个点 可以从该
  • 读取 Json 序列化 c#

    我正在尝试从这个 json 文本中获取 id 我不知道如何获取它不允许我创建 json 对象 我尝试反序列化它这样做 public async Task
  • C++ 内存映射文件实现

    我在实现内存映射文件时没有任何问题 问题是 假设这返回一个有效的内存视图 void pBuf MapViewOfFile hMapFile FILE MAP WRITE 0 0 0 除了使用 memcpy 向其提供数据之外 我还有其他选择吗
  • 将表达式转换为数据类型 int 以进行基本统计时发生算术溢出错误

    我正在尝试执行一个计算平均值 最小值 最大值和计数的基本查询 SELECT MIN column as min MAX column as max AVG column as avg count as count FROM database
  • 如何在startup.cs的Configure方法中使用ConfigurationBinder

    ASP NET MVC 6 beta5 我尝试使用 config json 来激活 非活动日志记录 public IConfiguration Configuration get set public Startup IHostingEnv
  • 在Python中递归地展平嵌套列表[重复]

    这个问题在这里已经有答案了 我正在尝试使用 Python 中的生成器 并尝试利用实现展平函数的简单递归方案 也就是说 一个函数将可能包含子列表的列表作为输入 并输出仅迭代输入的原子元素的可迭代对象 So print list flatten
  • 可以从 WCF 与 Windows 服务进行通信

    我有点新windows services 我有WCF service在一台机器 机器1 上运行 Windows服务在另一台机器 机器2 上运行 我需要我需要运行一个powershell使用 WCF 服务在计算机 2 上编写脚本 我不知道从哪
  • 我可以将 32 位 DLL 加载到 Windows 上的 64 位进程中吗?

    我最近升级了一个 C Windows 服务以作为 64 位 net 进程运行 通常 这很简单 但系统使用了用 C 编写的 32 位 DLL 无法将此 DLL 转换为 64 位 因此我将 DLL 包装在单独的 32 位 net 进程中 并通过
  • 异步任务超时

    我有这段代码来发出异步 HTTP 请求 public static void MakeRequest Uri uri Action
  • Joomla插件:如何获取文章标题和文章id

    我在 Joomla 1 6 中开发了简单的插件 我坚持 如何获取文章标题和文章网址 如果尝试打印以下语句 我不会得到任何输出 echo article gt title echo article gt id 我把这个写在php文件中 没有使
  • Pi Zero W 连接到两个外设(GPIO 和 USB):如何同时连续读取两个外设?

    我有一个 raspberry pizero W 它通过 GPIO 引脚连接到流量计 并通过 USB 连接到条形码扫描仪 我有一个 python 脚本 它使用回调函数在检测到 GPIO 输入时发出警报 该 python 脚本需要在 pizer
  • 提交表单后 jQuery 页面重定向

    我有这样的表格
  • 让 foo(衍生对象) 调用 foo(Base const&) 而不是模板函数?

    鉴于此代码 template lt class C gt void foo C const o o nosuch struct Base void foo Base const struct Derived Base auto main g
  • 通过ajax提交多个表单

    我试图通过 ajax post 提交多个表单 但问题是服务器在 post 中返回一个空数组 这是我的JS中的代码 check test click function e e preventDefault e stopPropagation
  • 在多用户访问环境中立即“锁定”一条记录

    因此 Access 中的记录锁定非常糟糕 我无法使用内置记录锁定 因为它锁定记录的 页面 而不仅仅是单个记录 我已尝试更改使用记录级锁定的设置 但它仍然锁定页面而不仅仅是锁定一条记录 但即使我可以让它工作 它也无法解决我的问题 因为在用户开
  • 首先,反思动态类型以判断它是否是动态类型

    有没有一种方法可以判断对象分配的类型是否是动态类型 例如 dynamic foo GetCat Console WriteLine foo is Cat ToString will print True because at the exe
  • Excel/VBA 细分字段

    我必须完成一项复杂的任务 但我会尝试解释 我有一个包含 23000 行数据的 Excel 文件 我正在将其导入到网站中 每个都有一个像这样的字段 Category other data other data 2 Foods Dog Trea
  • Laravel 5.3 更改 Auth 中的用户表

    我正在使用 Laravel 5 3 并使用make authartisan 命令来搭建登录 注册系统 我正在以公司身份登录 所以我有一个名为Company 如何更改原始sql以获取电子邮件和密码Company表而不是User table 我
  • C++ 宏中的语句

    阅读 chromium 代码 发现有助于处理 POSIX 兼容系统上系统调用的 EINTR errno 的宏 这是代码 base posix eintr wrapper h define HANDLE EINTR x decltype x