品牌营销策划书籍,免费优化网站的软件,wordpress it企业模板,河南有名的做网站公司有哪些一. 预处理详解
1.1 预定义符号 FILE //进行编译的源文件LINE //文件当前的行号DATE //文件被编译的日期TIME //文件被编译的时间FUNCTION //文件当前所在的函数STDC //如果编译器遵循ANSI C标准#xff0c;其值为1#xff0c;否则未定义 这些预定义符号都是语言内置的
我们…一. 预处理详解
1.1 预定义符号 FILE //进行编译的源文件LINE //文件当前的行号DATE //文件被编译的日期TIME //文件被编译的时间FUNCTION //文件当前所在的函数STDC //如果编译器遵循ANSI C标准其值为1否则未定义 这些预定义符号都是语言内置的
我们来使用下上面的语句 这样我们就可以知道 函数在什么时间 什么地点 发生了什么
1.2 #define 定义标识符号
define可以定义符号 例如
#define MAX 1000
int main()
{int m MAX;//int m 1000;printf(%d\n, m);return 0;
}
在预处理时其实MAX就变成了1000
这里注意的是define是不能加分号的 否则替换到源文件里面会出现各种问题
1.3 #define 定义宏
我们举个例子
#define SQUARE(x) (x)*(x)
int main()
{printf(%d\n, SQUARE(5 1));//不要吝啬括号不加括号有时候可能导致优先级的错误printf(%lf\n, SQUARE(5.0));//宏定义不限制类型return 0;
}
这里 它就是一个宏 它允许把参数替换到文本中去 这种实现通常称为宏
我们在定义宏的时候一定要注意括号
#define DOUBLE(x) ((x)(x))
int main()
{printf(%d\n, 10 * DOUBLE(3));//最好能把整体也加上括号return 0;
}
这题如果不在宏定义时加上整体的一个大括号就会导致输出结果的错误 计算成33
但实际上我们的要求是60
这里还有要注意的一点 注释中的宏是不会被替换的
1.4 #define 的副作用
我们写出以下代码
#define Max(x,y)((x)(y))?(x):(y)int main()
{int a 5;int b 8;int c Max(a, b);printf(%d\n, a);printf(%d\n, b);printf(%d\n, c);return 0;
}
这里输出结果如下 我们可以发现 其实b是了两次的
这里就是宏的一个小缺陷
1.5 宏和函数对比
宏通常用于比较简单的运算
例如求两个数中的较大值
为什么这样子呢
因为 1 宏在规模和速度方面更胜一筹 2 函数必须要声明类型 而宏不用 当然宏也有缺点 每次使用宏的时候一份宏的代码将会被插入到程序中 除非宏比较短 可能大幅度增加程序的长度宏无法调试宏无类型定义 不够眼睛宏可能会带来操作符优先级的问题 导致程序出错 以上便是本文所有内容了如有错误请各位大佬不吝赐教感谢留言