在#define函数宏中使用符号名称作为字符串文字

aaa*_*dan 3 c c-preprocessor

我想要一个像这样工作的调试函数宏:

int myVar = 5;
PRINTVAR(myVar); // macro

// which expands to something like...
print("myVar: ");
println(myVar);
Run Code Online (Sandbox Code Playgroud)

基本上,我想将标识符用作字符串文字和变量.

当我想将大量变量转储到stdout时,我只是有点厌烦重复自己.

我的愚蠢尝试,当然不起作用:

#define PRINT_VAR(x) Serial.print("x: "); Serial.println(x);
Run Code Online (Sandbox Code Playgroud)

这可能吗?

caf*_*caf 10

"stringizing operator"就是针对这种情况而设计的:

#define PRINT_VAR(x) (print(#x ": "), println(x))
Run Code Online (Sandbox Code Playgroud)