代码
#include<iostream>
using namespace std;
#define str(type) #type
#define sz(type) cout<< str(type) << ":" << sizeof(type) << "B"<< endl;
int main() {
sz(char);
sz(unsigned char);
sz(short);
sz(unsigned short);
sz(int);
sz(unsigned int);
sz(long);
sz(unsigned long);
sz(int long);
sz(unsigned int long);
sz(long long);
sz(unsigned long long);
sz(float);
sz(double);
sz(long double);
return 0;
}
define字符串化运算符
在这里第四行,用到了define 的一元运算符 #,它常称为字符串化运算符(stringify operator 或 stringizing operator),它会把宏调用时的实参转换为字符串。# 的操作数必须是宏替换文本中的形参。当形参名称出现在替换文本中,并且具有前缀 # 字符时,预处理器会把与该形参对应的实参放到一对双引号中,形成一个字符串字面量。
比如在这里,sz(char),#会把char转化成”char”,赋值给str(type),然后输出。