#define P(EX) cout << #EX << ":" << EX << endl;

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:51:00
#EX这种写法为什么能把EX代表的字符串打印出来

我知道这是宏定义
一楼,这样只能在宏里面用是吧?
我在没有宏的情况下,用不了这种 #变量名 的形式,能解释下为啥不?

#EX不是把EX代表的字符串打印出来,而是打印EX字面上的字符串,也就是打印出“EX”
#define p(EX) cout<< #EX << ":" << EX <<endl;

如果是这样调用:
int xx = 100;
p(xx);
则打印的结果会是:xx:100
xx是变量名,#xx就表示xx这个变量名字的字符串,这是C定义的规则
类似的还有##,它是连接两个字面字符串

C++标准规定的吧
我觉得这个问题就相当于C++里不允许 3=4;这样的语句一样,规定而已,没有道理可言。

把变量和表达式转换成字符串

可是使用字符串运算符来实现转换输出定义

#define p(EX) cout<< #EX << ":" << EX <<endl;