如何使用macros参数作为string文字?
我想弄清楚如何编写一个macros,将一个variables名称的string文字表示与variables本身一起传递给一个函数。
例如给出以下function。
void do_something(string name, int val) { cout << name << ": " << val << endl; }
我想写一个macros,所以我可以这样做:
int my_val = 5; CALL_DO_SOMETHING(my_val);
哪个会打印出来: my_val: 5
我尝试了以下操作:
#define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR);
但是,正如您可能猜到的那样,引号内的VAR不会被replace,而只是以string文字“VAR”的forms传递。 所以我想知道是否有办法将macros参数变成一个string本身。
使用预处理器#
运算符 :
#define CALL_DO_SOMETHING(VAR) do_something(#VAR, VAR);
你想使用string操作符:
#define STRING(s) #s int main() { const char * cstr = STRING(abc); //cstr == "abc" }
#define NAME(x) printf("Hello " #x); main(){ NAME(Ian) } //will print: Hello Ian
也许你试试这个解决scheme:
#define QUANTIDISCHI 6 #define QUDI(x) #x #define QUdi(x) QUDI(x) . . . . . . unsigned char TheNumber[] = "QUANTIDISCHI = " QUdi(QUANTIDISCHI) "\n";