关于c语言宏定义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于c语言宏定义相关的知识,希望对你有一定的参考价值。

typedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char 对么
但是后面更不明白了
#define LOBYTE(w) ((BYTE)(WORD)(w))
#define HIBYTE(w) ((BYTE)((WORD)(w) >> 8))
w是哪里来的不需要事先定义么,LOBYTE(w)代表这什么意思
BYTE WORD为什么这么用

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得到高字节部分
参考技术A ypedef unsigned char BYTE;
typedef unsigned short WORD;
意思是可以用BYTE替代unsigned char
是对的,BYTE,WORD是新的变量类
参考技术B LOBYTE(w) 是宏定义函数,w在函数体指明了。
LOBYTE(w)是取w的低八位, word是指明w是word类型。

以上是关于关于c语言宏定义的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言宏定义,这样为啥不行

C语言的宏定义问题

C语言的宏定义问题

关于三维向量加减乘除的C语言宏定义?

C语言中,宏替换与定义全局变量的区别是啥?

c语言中的宏定义的学习体会