我遇到該C宏: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
類型的結構PARAMS宏。但我真的不明白這兩條線的意思:
__cmd ## _ ## _symname ## _ ## _handler ## _ ## _nlcmd ## _ ## _idby ## _ ## _hidden\
__attribute__((used)) __attribute__((section("__cmd"))) = { \
有人可以解釋一下嗎?謝謝。
這是令牌粘貼操作符(##)的應用程序。看看這裏 - https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html – Samboy786