如何使用宏将字符串转换为变量名?

#define TRACE(arg1,...) char* arg1; int main(void) { int a=4; TRACE(("Hello",a)); // convert "Hello" to a valid char variable name. return 0; } 

我在将字符串"Hello"转换为变量名时遇到了麻烦。 例如: "Hello"应该转换为const char* Hello; 通过使用宏。 由于有双引号,我无法转换它。 这是Stack Overflow中的第一个问题。

你不能在C中“解串”一个字符串。

但是,您可以对令牌进行字符串化,因此解决方案是以相反的方式执行此操作:使用令牌hello并在需要"hello"时将其字符串化。

感谢大家花了宝贵的时间回答我的问题。 你的一些评论给了我一个想法来理清答案。 你可以在下面找到答案:

 #define TRACE(arg1,...) TRACE2 arg1 #define TRACE2(arg1, arg2) static const char arg1; \ printf("%p\n",(void*)&arg1);\ printf("%d\n",arg2);\ 

如果可以在此代码中进行任何更改,请告知我们。