#define PI(a) 2.1415926+a
宏不能递归定义,可以迭代定义(迭代在扫描时发生)
error : #define p9 p9+1
success:
#define p8 3.14
#define p9 p8+1
带参宏需要加一层小括号,避免优先级问题错误
2.条件编译
#if defined DEBUG
语句1
#else
语句2
#endif
传参定义宏
--DDEBUG
3.宏的运算
#: 字符串化
##: 字符串连接
#define STR(a) #a
#define STRCAT(a,b) STR(a) a##b
//fopen打开文件//缓冲区//读缓冲和写缓冲,是由操作系统为当前运行的程序自动分配得,有大小限制
FILE* fp = NULL; //文件结构体指针(宏定义),文件指针
fp = fopen("/Users/qianfeng/macro/data.txt","r+”);
perror("data1.txt”); //报错,带有系统错误提示
rewind(fp); //将文件读写光标回置到最前面
fseek();文件回置 SEEK_SET SEEK_CUR SEEK_END
fseek(fp, 5L, SEEK_SET);
EOF == -1 只存在于文件结尾
scanf每次从输入缓冲区中取数据,根据指定的类型取数据,
不符合指定类型的数据依然存在于缓冲区中,缓冲区中默认都是字符
scanf遇到空格或者换行就表示输入结束
char buffer[512];
fgets ---只能用户输入字符串,操作文件时遇到空格不会结束,遇到换行结束
fgets(buffer, 12, stdin);
fputs -----写入数据
fputs(buffer+5,fp); 指针偏移5个字符将后面的内容追加到fp文件里