gpt4 book ai didi

c - 宏定义中的({;})和({0;})代表什么意思?

转载 作者:行者123 更新时间:2023-12-04 10:11:01 24 4
gpt4 key购买 nike

我正在浏览luster源代码,但被宏定义困住了:

#define ldlm_namespace_proc_unregister(ns)      ({;})  
#define ldlm_namespace_proc_register(ns) ({0;})

在文件 lustre/ldlm/ldlm_resource.c 中定义。
这个宏定义意味着什么?

最佳答案

宏是纯文本的替代。该宏意味着一段代码 ldlm_namespace_proc_register(x) 将转换为 ({0;})。不多不少。

如果您还想知道代码 ({;})({0;}) 的含义,那么它们是 GCC expression statements .

根据该文档,({0;}) 应该与 0 完全相同,而 ({;})void 类型的表达式。


推测如下:这些宏的目的可能是支持库的用户编写如下代码:

int result = ldlm_namespace_proc_register(x);
// ...
ldlm_namespace_proc_unregister(x);

而且根据编译器开关或其他配置,此代码可能实际上调用一个函数,或者在启用您的行的情况下,实际上什么都不做。

关于c - 宏定义中的({;})和({0;})代表什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33885671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com