#include <stdio.h>
/*通过#define来定义宏,规则如下:#define 宏名(记号) 内容
在编译时,预处理器会进行宏替换操作,将程序中所有的全部替换成3.1415926,
注意这个与类型无关 ,是纯文本替换,相当与把我们的代码修改了,PI直接变成了3.1415926
定义其他任意内容,同样会替换到那个位置,但替换后,正常与否不知
*/
#define PI 3.1415926
#define P 23
#undef P//取消定义(undef:未定义)
#define sum a+b
#define text long
#define p(a) a*a//像函数,可以添加参数
#define say(i) printf("我是宏定义替换的值%d\n",i);//直接调用函数
#define say1(i) printf("我是宏定义替换的值"#i"");/*想在字符串中加宏定义中的参数
使用#直接在字符串中进行宏定义替换,否则默认情况下会被当作为一个字符*/
#define TEXT(i) x##i//##会使参数进行拼接
int main()
{
/*printf("%.7f\n", PI);
printf("%d", P);*/
/*int a = 10, b = 20;
printf("%d", sum * a);//纯文本替换
printf("%d\n", a + b * a);*/
/*text a = 12L;
printf("%ld", a);*/
/*printf("%d\n", p(2));//2为参数,p(2)会被替换成2*2
say(23);
say1(43);*/
/*int TEXT(1) = 12;
printf("%d", x1);*/
/*系统提供的一些预定的宏:
printf("%s\n", __DATE__);//__DATE__ 当前的日期,格式为类似Apr 4 2024的字符串
printf("%s\n", __TIME__);//__TIME__ 当前的时间,格式为类似17:43:36的字符串
printf("%s\n",__FILE__);//__FILE__ 当前源代码文件的名称(含路径)的字符串
printf("%d", __LINE__);//__LINE__ 当前所处行数是多少就替换为多少的整数
*/
}