作为字符串 c/C++ 的宏名称扩展

macro NAME expansion as string c/C++

本文关键字:扩展 C++ 字符串      更新时间:2023-10-16

我想将宏扩展中的宏名称用作字符串。

例:

#define DEBUG_TEST(a, ...) printf("DEBUG_TEST::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__)

想要更改为不再需要"DEBUG_TEST"的东西,而是像这样的东西:

#define DEBUG_TEST(a, ...) printf(__MACRO__ "::%s (%d) : " a, __FUNCTION__, __LINE__, ##__VA_ARGS__)

当然,在我的例子中 __MACRO__ 剂量不存在...

我相信这是不可能的。我的建议是创建另一个将宏的名称作为参数的宏。然后在其他宏中使用此宏。