繁体   English   中英

有人可以解释这个宏定义吗?

[英]Can someone please explain this macro definition?

宏定义如下:

#define open_listen_fd_or_die(port) \
   ({ int rc = open_listen_fd(port); assert(rc >= 0); rc; })

open_listen_fd()是一个函数,它返回整数值。
我的问题:第三个语句rc;的意义是什么? ?

您正在查看一个 gcc 扩展,它允许您将多个语句视为单个表达式。 最后一个需要是用作整个事物结果的表达式。 它旨在用于宏中以允许存在临时变量,但在现代 C 中,在这种和许多其他情况下最好使用内联函数而不是像宏这样的函数(不仅仅是因为这是一个非标准的扩展和内联函数是标准的):

inline int open_listen_fd_or_die(int port) {
    int rc = open_listen_fd(port);
    assert(rc >= 0); // maybe not the best approach
    return rc;
}

更多信息可以在gcc 文档中找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM