宏定义学习
宏定义学习
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义不可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义不可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。
1.宏定义一定要加括号的原因是主要由于宏定义是完全替换的。如果不加括号可能会导致在下面主函数的运算的过程中替换后不是我们要表达的原意
例如下面的代码:
# include <stdio.h>
#define year 365+2 //如果我们不加括号(365+2)那么在下面的调用过程中就会发生源代码中的问题,会先计算365+2*2 而我们原意要表达的
int main(void) //是(365+2)*2
{
int a;
a=year*2;
printf("%d",a);
return 0;
}
2.宏定义表示一年中有多少秒:
默认情况小 宏定义数据类型是整形的(即是int类型)所以在考虑宏定义的时间应该注意他的类型的范围
如果超出默认的整形类型的时候就需要强制类型转换,比如下面的例子:
我们来用宏定义一年的时间(s)
#define year ()UL
后面的UL 就是强制类型转换。
声明:
博主是原悦乎教程网站长,博主写博客花费了大量精力,我的博客欢迎转载共享,但在 同时,希望保留我的署名权,不得用于商业用途。转载时请注明转载地址。未经特别说明,均采用“署名-非商业性使用-禁止演绎 2.5 中国大陆”授权。任何违反本协议的行为均属于非法行为。