大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
宏定义的基础知识。引用宏定义时,直接代入进行代换。
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了婺源免费建站欢迎大家使用!
既然已经宏定义SUB(a) (a)-(a),而程序中出现的对应a的是a+b,那么就将a换为a+b代入表达式:
d=SUB(a+b)*c=(a+b)-(a+b)*c=(2+3)-(2+3)*5
直接用(a+b)-(a+b)代换SUB(a+b)。这一点和数学是不同的,不要强行往数学上靠。
typedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char
是对的,BYTE,WORD是新的变量类型
#define LOBYTE(w) ((BYTE)(WORD)(w))
这里是宏定义。类似函数定义,w作为参数,是文本。在编译时把LOBYTE(w)变为 ((BYTE)(WORD)(w))。比如输入:
WORD dat;
BYTE b ;
b=LOBYTE(dat);
编译时会替换为b=((BYTE)(WORD)(dat));意思是得到低字节部分。
同理HIBYTE得到高字节部分
主要用于函数重定义,通用性,可以用一个变量符号替代另一个变量符号
格式:#define M(x,y) x+y
在主程序里写入z=M(6,9);等价于z=6+9;而写成z=(6-8,9);等价于z=6-8+9 ;直接代入
还有就是 :#define Uint unsigned int 即用 Uint 代替unsigned int 便于书写,还有就是不同操作系统的通用变量识别
C语言中的宏定义用法分为两种。
1、不带参数的宏定义比较简单,就是用一个指定的标识符来代表一个字符串。它的一般形式为“#define 标识符 字符串”,例如#define E 2.718281828459。这种方法使用户能以一个简单的名字代替一个长的字符串。
2、带参数的宏定义不是仅仅进行简单的字符串替换,还要进行参数替换。其定义的一般形式为;“#define 标识符(宏名)(参数表) 字符串”,字符串中包含在括号中所指定的参数。例如#define S(a,b) a*b area=S(3. 2)。
扩展资料:
宏定义只占编译时间,函数调用则占用运行时间(分配单元,保存现场,值传递,返回),每次执行都要载入,所以执行相对宏定义会较慢。
使用宏定义次数多时,宏定义展开后源程序很长,因为每展开一次都使程序增长,但是执行起来比较快一点(这也不是绝对的,当有很多宏定义展开,目标文件很大,执行的时候运行时系统换页频繁,效率就会低下)。而函数调用不使源程序变长。
在C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。
扩展资料:
宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。
计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
参考资料:
宏定义百度百科
宏定义又称为宏代换、宏替换,简称“宏”。
是C提供的三种预处理功能的其中一种。
1、宏名一般用大写。
2、使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义。
3、预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
4、宏定义末尾不加分号。
5、宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
6、可以用#undef命令终止宏定义的作用域。
7、宏定义可以嵌套。
8、字符串" "中永远不包含宏。
9、宏定义不分配内存,变量定义分配内存。