[英]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.