c - 当exp中有引号时,LPC宏如何进行字符串化?

标签 c macros

目前我正在使用 LPC,它使用与 C 相同的预处理器。 我们有一个宏如下:

#define UT_TRUE(exp) _UT_TRUE(exp, "##exp")

但现在我们的 exp 为:

UT_TRUE(map["true"])

所以它变成:

_UT_TRUE(map["true"], "map["true"]")

exp 变为“map[”true“]”,true 未定义。

有什么技巧可以解决这个问题吗?

最佳答案

试试这个,希望这有帮助,..

#define UT_TRUE(exp) _UT_TRUE(exp, #exp)

可以引用一下..

http://gcc.gnu.org/onlinedocs/gcc-4.3.4/cpp/Stringification.html

关于c - 当exp中有引号时,LPC宏如何进行字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970983/

相关文章:

C++ 宏和重载

scala - 如何获取传递给 Scala 宏的参数的运行时值?

c - 如何在 C 中复制此字符串?

c++ - 每个标记的可变宏扩展

c++ - 可变参数宏

c++ - 两个宏之间重复运算的效率

rust - 为什么另一个宏内的宏调用不会扩展,而是出现 “no rules expected the token ` !`”?

C: 信号量 - 如何仅在 n 次回调后释放信号量

c - 有什么方法可以准确获取 Linux 上文件的哪一部分已更改

c - 死亡循环,也许是 scanf