#include<iostream>
#define to_string(s) #s
#define com(x,y) x##y
#define ad(x) ( ((x)>0)? -(x):(x))
#define PI 3.14
/*
预处理命令:#define用法和应用
#define x y //把文件中的x都替换成y,直接替换
应用:
1.用于宏定义(把字符串替换成常量) eg:#define PI 3.14
2.用于函数替换(表达式多用圆括号,为了区分) 格式 #define 函数名(不带类型的参数列表) 表达式
eg:求最大值函数
#define max(x,y) ( (x>y)?(x):(y) )
。。。
cout<<max(12,1)<<endl; //把max(12,1)替换成#define定义的函数
用于替换文件中的max(x,y)函数,返回值是后面的语句
3.#define 和"#" 或者"##"连用 只能和#define连用
1.#的作用是:使#后面的首个参数返回一个带引号的字符串
2.##的作用是:连接##前后的内容
eg:#define to_string(s) #s
调用 cout<<to_string(hello world)<<endl; //to_string的回结果是"hello world"
eg:#define ad(x,y) x ## y
调用 cout<<ad(12,3)<<endl; //ad(12,3)返回的结果是 123 不改变类型就是简单的连接
*/
using namespace std;
int main()
{
cout<<to_string(hello world)<<endl;
cout<<sizeof(com(19,2))<<endl;
cout<<ad(-12)<<endl;
cout<<PI*PI<<endl;
return 0;
}