当时刚找到这个用法, 我高兴了好一阵,但后来发现,它并没有我想象中有用。这只是一个障眼法罢了,并没有看上去那么有用。
#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++对这方面的支持还是比较小的。