c语言常用宏函数 c语言宏定义的几个坑和特殊用法( 四 )


贡献时间:2010-09-10
贡献者:handanlinzhang
C语言中的宏定义怎么用?C语言中的宏定义用法分为两种 。
1、不带参数的宏定义比较简单,就是用一个指定的标识符来代表一个字符串 。它的一般形式为“#define 标识符 字符串”,例如#define E 2.718281828459 。这种方法使用户能以一个简单的名字代替一个长的字符串 。
2、带参数的宏定义不是仅仅进行简单的字符串替换,还要进行参数替换 。其定义的一般形式为;“#define 标识符(宏名)(参数表) 字符串”,字符串中包含在括号中所指定的参数 。例如#define S(a,b) a*b area=S(3. 2) 。
扩展资料:
宏定义只占编译时间,函数调用则占用运行时间(分配单元 , 保存现场 , 值传递,返回),每次执行都要载入 , 所以执行相对宏定义会较慢 。
使用宏定义次数多时 , 宏定义展开后源程序很长,因为每展开一次都使程序增长,但是执行起来比较快一点(这也不是绝对的,当有很多宏定义展开,目标文件很大,执行的时候运行时系统换页频繁,效率就会低下) 。而函数调用不使源程序变长 。
c语言中的“宏”是指什么?宏定义是C语言提供的三种预处理功能的其中一种 , 这三种预处理包括:宏定义、文件包含、条件编译 。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解 。
1. 不带参数的宏定义:
宏定义又称为宏代换、宏替换,简称“宏” 。
格式: #define 标识符 字符串
其中的标识符就是所谓的符号常量,也称为“宏名” 。
预处理(预编译)工作也叫做宏展开:将宏名替换为字符串 。
掌握"宏"概念的关键是“换” 。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换” 。
(1)宏名一般用大写
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改 。例如:数组大小常用宏定义
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查 , 预处理不做语法检查 。
(4)宏定义末尾不加分号;
(5)宏定义写在函数的花括号外边 , 作用域为其后的程序 , 通常在文件的最开头 。
(6)可以用#undef命令终止宏定义的作用域
(7)宏定义可以嵌套
(8)字符串" "中永远不包含宏
(9)宏定义不分配内存,变量定义分配内存 。
2. 带参数的宏定义:
除了一般的字符串替换 , 还要做参数代换 。
c语言宏定义如何用?用宏定义有什么优点?主要用于函数重定义,通用性,可以用一个变量符号替代另一个变量符号
格式:#define M(x,y)x+y
在主程序里写入z=M(6,9);等价于z=6+9;而写成z=(6-8,9);等价于z=6-8+9 ;直接代入
还有就是 :#define Uintunsigned int 即用 Uint 代替unsigned int便于书写,还有就是不同操作系统的通用变量识别
【c语言常用宏函数 c语言宏定义的几个坑和特殊用法】c语言常用宏函数的介绍就聊到这里吧 , 感谢你花时间阅读本站内容 , 更多关于c语言宏定义的几个坑和特殊用法、c语言常用宏函数的信息别忘了在本站进行查找喔 。

推荐阅读