版权声明:有疑问欢迎联系我QQ2267507789 https://blog.csdn.net/CCCrunner/article/details/82844209
- 宏名和参数的括号间不能有空格
- 宏替换只作替换,不做计算,不做表达式求解
- 函数调用在编译后程序运行时进行,并且分配内存,宏定义在编译前进行,不分配内存
- 宏的哑实结合不存在类型,也没有类型转换。
- 函数只有一个返回值,利用宏则可以设法得到多个值
宏定义说明 - 宏名一般用大写
- 使用宏可提高程序的通用性和易读性,减少不一致性,
- 减少输入错误和便于修改。例如数字大小通常用宏定义
- 宏定义末尾不加分号;
- 宏定义通常卸载函数的花括号外边,作用域为其后的程序,通常在文件的最开头
- 可以用#undef命令终止宏定义的作用域
- 宏定义允许嵌套
- 宏定义不分配内存,变量定义分配内存
- 宏定义不存在类型问题,它的参数也是无类型的
- 宏定义展开使源程序变长,函数调用不会
- 宏展开不占用运行时间,只占编译时间,函数调用占运行时间(分配内存,保留现场,值传递,返回值)
学习视频网址:
http://edu.51cto.com/center/course/lesson/index?id=214262
http://www.51zxw.net/show.aspx?id=17257&cid=329
凡是以"#"号开头的行都成为“编译预处理”命令行
宏替换