奇怪的C宏语法(#var)

An̲*_*rew 3 c syntax macros

#符号在#define宏中用作变量前缀时的含义是什么?

例如,

#define my_setopt(x,y,z) _my_setopt(x, 0, config, #y, y, z)
Run Code Online (Sandbox Code Playgroud)

Ric*_*dle 7

它是字符串化运算符,它将宏参数转换为字符串文字.

所以在你的例子中:

my_setopt(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

会扩大到:

_my_setopt(1, 0, config, "2", 2, 3)
Run Code Online (Sandbox Code Playgroud)