【发布时间】:2015-10-19 07:05:52
【问题描述】:
我遇到了这个 C 宏:
#define __COMMAND(_section, _symname, _name, _args, _nlcmd, _flags, _hidden, _idby, _handler, _help, _sel)\
static struct cmd \
__cmd ## _ ## _symname ## _ ## _handler ## _ ## _nlcmd ## _ ## _idby ## _ ## _hidden\
__attribute__((used)) __attribute__((section("__cmd"))) = { \
.name = (_name), \
.args = (_args), \
.cmd = (_nlcmd), \
.nl_msg_flags = (_flags), \
.hidden = (_hidden), \
.idby = (_idby), \
.handler = (_handler), \
.help = (_help), \
.parent = _section, \
.selector = (_sel), \
}
我隐约明白它试图从宏的一堆输入参数中定义一个cmd 类型的结构。但我真的不明白这两行是什么意思:
__cmd ## _ ## _symname ## _ ## _handler ## _ ## _nlcmd ## _ ## _idby ## _ ## _hidden\
__attribute__((used)) __attribute__((section("__cmd"))) = { \
谁能解释一下?谢谢。
【问题讨论】:
-
这是令牌粘贴运算符 (##) 的应用。看看这里 - gcc.gnu.org/onlinedocs/cpp/Concatenation.html