使用关键字define 定义就叫宏。例如:
#define PI 3.14 (宏定义)
在预处理阶段,使用3.14替换所有出现 PI 的位置(宏展开)
注意:宏后面不要加分号
建议宏尽量用大写字母,用于和普通变量分开
宏的作用范围是从宏定义处开始到当前文件结束都有效(#undef可以结束宏)
宏没有归属(不属于函数、结构体),只在当前源文件有效
不带参数的宏
例如:
带参数的宏
例如:
宏的参数不能有类型
例如:#define MY_MUL(int a, int b) a*b //error
宏不能保证参数的完整性
如果想保证一定的完整性,可以使用 () 的形式
宏不能作为结构体、类的成员
带参数的宏(宏函数)和带参函数的区别
带参宏被调用多少次就会展开多少次,执行代码的时候没有函数调用的过程,不需要压栈弹栈。所以带参宏是浪费了空间,节约了时间(以空间换时间)
带参函数,代码只有一份,存在代码区,调用的时候区代码区取指令,调用的时候要压栈弹栈。所以是节约了空间,浪费了时间(时间换空间)
带参函数的形参有类型,带参宏的参数没有类型
标签:,调用,函数,int,代码,参数,define From: https://www.cnblogs.com/yachifeng/p/17161471.html