当时刚找到这个用法, 我高兴了好一阵,但后来发现,它并没有我想象中有用。这只是一个障眼法罢了,并没有看上去那么有用。
#include<string>
#include<iostream>
using std::string;
using std::cout;
using std::endl;
#define _VNAME(value) (#value)
int main()
{
int a = 10;
cout << _VNAME(a) << " = " << a << endl;
return 0;
}
#undef _VNAME
只是简单地用宏来为变量名加上引号,变成一个字符串罢了。 #value相当于给value前后加上引号,于是当我们使用_VNAME(a)时,编译器会把它替换为"a"。但仔细想想它没什么意义, 不如手动加个引号,写成"a"的样子,还能少打几个字。
C++对这方面的支持还是比较小的。
本文介绍了一种在C++中使用宏将变量名转换为字符串的方法,并对其实际应用价值进行了探讨。通过简单的示例展示了如何定义宏来实现这一功能,但同时也指出了这种方法的实际用途有限。

1万+

被折叠的 条评论
为什么被折叠?



