黑马程序员技术交流社区
标题:
c语言中的预处理指令和debug调试
[打印本页]
作者:
vyqrvwgf
时间:
2015-11-3 20:59
标题:
c语言中的预处理指令和debug调试
1.预处理指令的定义('#'开头)
再进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。
预处理指令包括:1)宏定义 2)文件包含 3)条件编译
2.宏替换的定义
源程序在编译之前,由预处理程序对我们写的源代码进行处理,把源代码中所有出现宏名的地方使用宏字符串替换。
3.宏的使用注意
1)作用域
#define M 3 到#undef M
2)字符串中宏名不被替换
printf("M=%d",M);
3)宏定义可以嵌套
#define R 4
#define pi 3.14
#define AREA pi*R*R
4)取别名
#define INT int
4.有参宏的定义和使用
#define 宏名(形参列表) 字符串
#include <stdio.h>
#define SUM(a) a+a
int main(){
int r = SUM(3);
return 0;
}
#intclude <stdio.h>
#define M(x,y) x*y+x+y
int main(){
int r = M(3,4);
return 0;
}
复制代码
1)形参之前可以出现空格,宏名和参数之间不能出现空格
2)字符串中每一个字符最好都用()括起来
#include <stdio.h>
#define M(x,y) x*y+x+y
int main(){
int a=3r;
r=M(a+3,a-1);
//r=a+3*a-1+a+3+a-1;
//#define M(x,y) (x)*(y)+(x)+(y)
复制代码
5.条件编译
#include <stdio.h>
#define SCORE 76
int main(){
#if SCORE <60
printf("Range E");
#elif SCORE <70
printf("Range D");
#elif SCORE <80
printf("Range C");
#elif SCORE <90
printf("Range B");
#else
printf("Range A");
#endif
return 0;
}
复制代码
6.debug调试
//DEBUG是系统使用的标示符,此处不能使用
#define DEBUG 0
#if DEBUG==1
//显示调试信息
#define Log(format,...)printf(format,##__VA_ARGS__))
#else
#define Log(format,...)
#endif
int main(){
Log(...);
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2